首先,了解下异或操作 ^ ,对一个数进行两次异或操作得到原数值。
public class IOTest {public static void main(String[] args) {int i = 3;System.out.println(i^123);//120System.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();}}