思路是这样的:
找到文件将文件读取到一块缓存。再将文件中的数据按位取反。
如果想要恢复,也很简单,只需要再在原来程序的基础上再进行按位取反就可以了。
程序代码如下:
=======================
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加密算法实现不可逆向加密……这种算法目前已经很成熟了。是一种不错的选择。
======