- 我们上面是使用了给读入的数据进行一个^5运算之后然后写出的方式对文件进行了加密操作,这个时候如果我们要使用加密后文件的解密, 这个时候我们就要给加密后的文件的数据再进行一个^5的运算 ,然后再将数据写出,然后就完成了解密
- 首先是加密
- 读入一个未加密文件
- 对读入文件数据进行^5 (也就是进行加密)
- 然后写出数据
- 然后是解密
-
读入一个加密后的文件
-
对读入的文件数据进行^5(也就是进行解密)
-
为什么这个时候对加密后文件数据进行^5又是进行了解密?
因为我们之前在只使用两个变量完成变量数据内容交换时学过,如果一个x异或y之后再异或一个y就是x,如果一个x异或y之后再异或一个x就是y,这个时候我们给原本的数据进行一次异或5之后就是进行了加密,然后再进行一次^5之后就是完成了解码
-
-
然后写出数据
- 这里我们对文件的加密的思想就是对文件中每个字节的数据进行编码之后^(异或)5,然后就完成了对文件的一个简单加密
package IO流.fileinputstream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo6 {
public static void main(String[] args) throws IOException{
FileInputStream fis = new FileInputStream("abc.png");
FileOutputStream fos = new FileOutputStream("abcSecret.png");
byte [] bytes = new byte[20];
int len = 0;
while((len = fis.read(bytes)) != -1){
for (int i = 0; i < len ; i++){
bytes[i] = (byte)(bytes[8] ^ 5);
}
fos.write(bytes,0,len);
}
fos.close();
fis.close();
}
}
- 上面的abc.png是一个本项目之下的图片
- 这个时候我们运行这个程序之后就会在本项目之下产生一个加密后的文件,这个文件名为abcSecret.png的加密文件
- 这个加密文件和我们的原文件的大小是完全相同的,但是我们的加密文件是不可以打开的
package IO流.fileinputstream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo7 {
public static void main(String[] args) throws IOException{
FileInputStream fis = new FileInputStream("abcSecret.png");
FileOutputStream fos = new FileOutputStream("abc5.png");
byte [] bytes = new byte[20];
int len = 0;
while((len = fis.read(bytes)) != -1){
for (int i = 0; i < len ; i++){
bytes[i] = (byte)(bytes[i] ^ 5);
}
fos.write(bytes,0,len);
}
fos.close();
fis.close();
}
}
- 这个时候我们运行一次程序之后将我们的加密后的文件作为输入,然后得到一个输出文件,这个时候我们就可以发现这个输出文件是正常文件


![文件解密 [Java] 文件解密 [Java]](http://www.mshxw.com/aiimages/31/685915.png)
