2016.11.03
前面找工作的原因,发现自己对很多知识和概念都理解不深,现在自己在看传智播客的视频,感觉讲的超级棒。今天看了使用异或对文件进行加密,甚是感兴趣,下面我们来看看是如何实现的。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class IamageTest {
public static void main(String[] args) throws Exception{
//找到图片文件
File inFile = new File("C:\\Users\\tuocheng\\Desktop\\tuocheng.jpg");
File outFile = new File("e:\\加密的图片.jpg");
//建立数据通道。让图片的二进制数据流入
FileInputStream input = new FileInputStream(inFile);
FileOutputStream output = new FileOutputStream(outFile);
//边读,把读到的数据异或一个数据,把数据写出
int content = 0;//该变量用于存储读到的数据
while((content = input.read())!=-1){//如果没有读到文件的末尾,那么继续读取数据已经存储到content变量中了
output.write(content^12);
}
//关闭资源
output.close();
input.close();
}
}
这样,我们在e盘下去找我们的图片,打开后就是
如果我们要对文件进行解密,要异或12回来就可以了,即
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class IamageTest {
public static void main(String[] args) throws Exception{
//找到图片文件
File inFile = new File("e:\\加密的图片.jpg");
File outFile = new File("e:\\解密的图片.jpg");
//建立数据通道。让图片的二进制数据流入
FileInputStream input = new FileInputStream(inFile);
FileOutputStream output = new FileOutputStream(outFile);
//边读,把读到的数据异或一个数据,把数据写出
int content = 0;//该变量用于存储读到的数据
while((content = input.read())!=-1){//如果没有读到文件的末尾,那么继续读取数据已经存储到content变量中了
output.write(content^12);
}
//关闭资源
output.close();
input.close();
}
}
如下图:
打开后:
我去,帅哥啊。
另外,在这个过程中,我发现所占内存没有发生改变。另外还有一个问题就是?为什么我用QQ截图不能直接粘贴到Windows桌面上,而要先粘贴到QQ上,不懂不懂。
会了这个功能之后,我们也就能够加密我们的私有信息,不让别人看到了。。