大家好,又见面了,我是你们的朋友全栈君。
首先,了解下异或操作 ^ ,对一个数进行两次异或操作得到原数值。
public class IOTest {
public static void main(String[] args) {
int i = 3;
System.out.println(i^123);//120
System.out.println(i^123^123);//3
}
}
将一张图片进行拷贝,对其进行加密,其实就是异或操作,
public class Test001 {
public static void main(String[] args) throws Exception {
FileInputStream in = new FileInputStream("F:\\Picture\\1.jpg");
FileOutputStream out = new FileOutputStream("F:\\text\\copy.jpg");
BufferedInputStream bin = new BufferedInputStream(in);
BufferedOutputStream bout = new BufferedOutputStream(out);
int len;
while((len=bin.read())!=-1){
bout.write(len^123);
}
bout.close();
bin.close();
}
}
效果:
打开图片报错:
接下来,对图片进行解密:就是对已经加密的图片,进行拷贝,执行异或操作
public class Test001 {
public static void main(String[] args) throws Exception {
FileInputStream in = new FileInputStream("F:\\text\\copy.jpg");
FileOutputStream out = new FileOutputStream("F:\\text\\copy2.jpg");
BufferedInputStream bin = new BufferedInputStream(in);
BufferedOutputStream bout = new BufferedOutputStream(out);
int len;
while((len=bin.read())!=-1){
bout.write(len^123);
}
bout.close();
bin.close();
}
}
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151984.html原文链接:https://javaforall.cn