对文件的加密及解密介绍
采用及其简单的方法进行加密和解密操作即:使用异或运算符的方法进行操作
源代码如下:
import org.junit.Test;
import java.io.*;
public class encryptionTest {
@Test
//文件的加密操作
public void test01() throws IOException {
FileInputStream fis=null;
FileOutputStream fos=null;
try {
//1.创建文件及流
fis = new FileInputStream(new File("图片.jpg"));
fos = new FileOutputStream(new File("图片00000000.jpg"));
//2.流的读入和写出
byte[] b = new byte[10]; //字节流byte
int len;
while ((len = fis.read(b)) != -1) {
//对字节数组进行更改
for (int i = 0; i < len; i++) {
b[i] = (byte) (b[i] ^ 1);//对每一个字节异或
}
fos.write(b, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
}
finally{
//对流进行关闭
if(fos!=null){
try{
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(fis!=null);
try{
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Test
//解密操作基本和加密操作一样
public void test02() throws IOException {
FileInputStream fis=null;
FileOutputStream fos=null;
try {
//1.创建文件及流
fis = new FileInputStream(new File("图片00000000.jpg"));//可以直接写文件的名称或路径
fos = new FileOutputStream(new File("图片00000111111.jpg"));
//流的读入和写出
byte[] b = new byte[10];
int len;
while ((len = fis.read(b)) != -1) {
//对字节数组进行更改
for (int i = 0; i < len; i++) {
b[i] = (byte) (b[i] ^ 1);//解密,两次异或值不变
}
fos.write(b, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
}
finally {
//对流进行关闭
if(fos!=null){
try{
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(fis!=null);
try{
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}