近期做项目遇到加密问题,通过在网上查阅大量资料,看见不少人提出通过给文件头部和尾部添加数据等方法,自己测试了一下,一个50m的文件通过这种方法,加解密时需要5s以上(用到了复制文件操作),这肯定不适合我的需求,所以自己借鉴网上的资料写了一个通过与数据头部按位'与'运算来实现加密的方法
java版
public classViodeUtils {
privateString TAG = "finished";
publicboolean encrypt(String strFile) {
if(strFile.endsWith(".tem")){
Log.i(TAG, "encrypt: 无需加密");
return false;
}
int len = 100;
try {
File f = new File(strFile);
RandomAccessFile raf = new RandomAccessFile(f, "rw");
long totalLen = raf.length();
if (totalLen < 100)
len = (int) totalLen;
FileChannel channel = raf.getChannel();
MappedByteBuffer buffer = channel.map(FileChannel.MapMode.READ_WRITE, 0, 100);
byte tmp;
for (int i = 0; i < len; ++i) {
byte rawByte = buffer.get(i);
tmp = (byte) (rawByte ^ i);
buffer.put(i, tmp);
}
buffer.force();
buffer.clear();