

java
package com.lkbhua.IO.Test;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class test2 {
public static void main(String[] args) throws IOException {
/* 加密和解密文件 */
// ^ 异或:0^0=0,0^1=1,1^0=1,1^1=0 两边相同false、否则true
// 一个数字异或两次相同的数字,结果为本身
// 加密: 拿着原本的数据进行异或,得到一个密文
// 解密: 拿着密文进行异或,得到原本的数据
// 1、创建对象关联原始文件
FileInputStream fis = new FileInputStream("C:\\Users\\27116\\Desktop\\test\\a.txt");
// 2、创建对象关联加密文件
FileOutputStream fos = new FileOutputStream("C:\\Users\\27116\\Desktop\\test\\b.txt");
// 3、加密处理
int b;
while ((b = fis.read()) != -1) {
fos.write(b ^ 5);
}
fos.close();
fis.close();
System.out.println("加密完毕");
// 4、解密处理
FileInputStream fis2 = new FileInputStream("C:\\Users\\27116\\Desktop\\test\\b.txt");
FileOutputStream fos2 = new FileOutputStream("C:\\Users\\27116\\Desktop\\test\\c.txt");
while ((b = fis2.read()) != -1) {
fos2.write(b ^ 5);
}
fos2.close();
fis2.close();
System.out.println("解密完毕");
System.out.println("程序结束");
}
}
加密部分
FileInputStream fis = new FileInputStream("C:\\Users\\27116\\Desktop\\test\\a.txt");:创建FileInputStream对象fis,用于读取原始文件a.txt。FileOutputStream fos = new FileOutputStream("C:\\Users\\27116\\Desktop\\test\\b.txt");:创建FileOutputStream对象fos,用于写入加密后的文件b.txt。int b;:声明一个整型变量b,用于存储读取到的字节。while ((b = fis.read()) != -1):循环读取文件中的字节,直到文件末尾(返回-1)。fos.write(b ^ 5);:将读取到的字节b与5进行异或运算,并将结果写入到b.txt文件中。fos.close();和fis.close();:关闭文件流,释放资源。System.out.println("加密完毕");:输出加密完成的提示信息。
解密部分
FileInputStream fis2 = new FileInputStream("C:\\Users\\27116\\Desktop\\test\\b.txt");:创建FileInputStream对象fis2,用于读取加密文件b.txt。FileOutputStream fos2 = new FileOutputStream("C:\\Users\\27116\\Desktop\\test\\c.txt");:创建FileOutputStream对象fos2,用于写入解密后的文件c.txt。while ((b = fis2.read()) != -1):循环读取文件中的字节,直到文件末尾(返回-1)。fos2.write(b ^ 5);:将读取到的字节b与5进行异或运算,并将结果写入到c.txt文件中。fos2.close();和fis2.close();:关闭文件流,释放资源。System.out.println("解密完毕");:输出解密完成的提示信息。System.out.println("程序结束");:输出程序结束的提示信息。