RandomAccessFile對檔案進行簡單加密
阿新 • • 發佈:2019-01-11
思路是這樣的:
找到檔案將檔案讀取到一塊快取。再將檔案中的資料按位取反。
如果想要恢復,也很簡單,只需要再在原來程式的基礎上再進行按位取反就可以了。
程式程式碼如下:
=======================
import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; //使用RandomAccessFile實現資料加密 public class RandomFileTest { //儲存檔案物件資訊 private File file; //緩衝區,建立檔案中的所有資料 byte[] buf; RandomAccessFile fp; //用引數filename所指定的檔案構建一個物件儲存,同時為緩衝區buf分配與檔案長度相等的記憶體空間 public RandomFileTest(String filename){ file=new File(filename); buf=new byte[(int)file.length()]; } public RandomFileTest(File desFilename){ file=desFilename; buf=new byte[(int)desFilename.length()]; } //按照讀寫方式開啟檔案 public void openFile()throws FileNotFoundException{ fp=new RandomAccessFile(file,"rw"); } //關閉檔案 public void closeFile()throws IOException{ fp.close(); } //對檔案進行加密或解密 public void coding()throws IOException{ //將檔案內容讀入到緩衝區 fp.read(buf); //將緩衝區內的內容按位取反 for(int i=0;i<buf.length;i++){ buf[i]=(byte)(~buf[i]); } //將檔案指標定位到檔案頭 fp.seek(0); //將緩衝區中的內容寫入到檔案中 fp.write(buf); } public static void main(String[] args) { RandomFileTest ran=new RandomFileTest("d:/test.txt"); try{ ran.openFile(); ran.coding(); ran.closeFile(); }catch(Exception e){ e.printStackTrace(); } } }
上面為了方便起見,之間在main裡面寫了一個測試。
為加密前:
加密之後===========================
要像對檔案進行解密只需再執行一下這個程式就可以了……
==============================================
這個程式只是實現簡單的加密,要是對重要檔案或是網上的銀行賬號、密碼進行Cookie加密還是使不得的……
那種情況可以考慮使用MD5加密演算法實現不可逆向加密……這種演算法目前已經很成熟了。是一種不錯的選擇。
======