1. 程式人生 > >RandomAccessFile對檔案進行簡單加密

RandomAccessFile對檔案進行簡單加密

 思路是這樣的:

   找到檔案將檔案讀取到一塊快取。再將檔案中的資料按位取反。
  如果想要恢復,也很簡單,只需要再在原來程式的基礎上再進行按位取反就可以了。
 程式程式碼如下:
=======================

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加密演算法實現不可逆向加密……這種演算法目前已經很成熟了。是一種不錯的選擇。
======