使用字节节点流完成对图片的加密
- 这里我们的图片可以替换成为任何的文件(包括文本文件和非文本文件)
- 我们使用字节流可以复制文本文件,也可以复制非文本文件
这里我们给出程序:
- 这里我们对文件的加密的思想就是对文件中每个字节的数据进行编码之后^(异或)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[]
*/
byte [] bytes = new byte[20];
/*
创建一个临时变量用来接收read()方法的返回值
*/
int len = 0;
/*
数据的读入和写出操作,每次读入数据之后,写出数据之前,我们要将数据编码进行一个^5,进行数据加密
*/
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的加密文件
- 这个加密文件和我们的原文件的大小是完全相同的,但是我们的加密文件是不可以打开的
结论:
其实我们对文件的加密就是对文件数据编码进行一个运算之后然后将改变之后的编码写出到另一个文件中,这个时候这两个文件的大小肯定是相同的,但是我们改变数据编码之后的文件(也就是加密后的编码),是打不开的,这个时候我们如果要打开这个加密后的文件,这个时候我们就要使用文件解密程序将这个加密后的文件输入之后输出一个解密后的可以打开的文件