思路: 在writer时使用异或将字节码乱序,解密时候再用异或就能返回本身的值。
原图:
在这里插入图片描述
加密:
public void test1() throws IOException {
FileInputStream fis = new FileInputStream("1.jpg");
FileOutputStream fos = new FileOutputStream("secret.jpg");
byte[] buffer = new byte[20];
int len;
while ((len=fis.read(buffer))!=-1){
for (int i = 0; i < len; i++) {
buffer[i] =(byte)( buffer[i]^5);
}
fos.write(buffer,0,len);
}
fos.close();
fis.close();
}
结果:
解密:
@Test
public void test2() throws IOException{
FileInputStream fis = new FileInputStream("secret.jpg");
FileOutputStream fos = new FileOutputStream("notsecret.jpg");
byte[] buffer = new byte[20];
int len;
while ((len=fis.read(buffer))!=-1){
for (int i = 0; i < len; i++) {
buffer[i] =(byte)( buffer[i]^5);
}
fos.write(buffer,0,len);
}
fos.close();
fis.close();
}
结果:
|