简单的文件加密:在写出时把每个字节异或操作,读时再异或就变回原来的。
package JavaFour;
import org.junit.Test;
import java.io.*;
/**
* @ClassName : FilceSecretTest //类名
* @Description : 文件的加密和解密 //描述
* @Author : Gao //作者
* @Date: 2022/3/7 18:04
*/
public class FilceSecretTest {
//加密操作
public static void main(String[] args) {
BufferedInputStream bufferedInputStream = null;
BufferedOutputStream bufferedOutputStream = null;
try {
bufferedInputStream = new BufferedInputStream(new FileInputStream("3.jpg"));
bufferedOutputStream = new BufferedOutputStream(new FileOutputStream("44.jpg"));
byte[] bytes = new byte[1024];
int len;
while ((len = bufferedInputStream.read(bytes)) != -1) {
for (int i = 0; i < len; i++) {
//对写入的每个字节进行异或操作
bufferedOutputStream.write(bytes[i] ^ 5);
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bufferedInputStream != null) {
try {
bufferedInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bufferedOutputStream != null) {
try {
bufferedOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
//解密
@Test
public void test(){
BufferedInputStream bufferedInputStream = null;
BufferedOutputStream bufferedOutputStream = null;
try {
bufferedInputStream = new BufferedInputStream(new FileInputStream("44.jpg"));
bufferedOutputStream = new BufferedOutputStream(new FileOutputStream("6.jpg"));
byte[] bytes = new byte[1024];
int len;
while ((len = bufferedInputStream.read(bytes)) != -1) {
for (int i = 0; i < len; i++) {
//读取时再异或操作就变回原来的
bufferedOutputStream.write(bytes[i] ^ 5);
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bufferedInputStream != null) {
try {
bufferedInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bufferedOutputStream != null) {
try {
bufferedOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}