大家好,又见面了,我是你们的朋友全栈君。
首先,了解下异或操作 ^ ,对一个数进行两次异或操作得到原数值。
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();
}
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/151984.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...