java实现文件超简易加解密操作

    科技2022-08-05  116

    原理:利用异或的特性,a == a ^b ^b ,即同一数据对同一个数经过两次异或后仍是原数据

    适用性:不单单适用于txt文件,还可适用于其他uncoide编码类型的文件,支持中文加密

    核心代码前瞻:

    while (true){ int data = fileInputStream.read(); if(data == -1){ //数据读完 break; } //加解密。同一数据经过对同一数字异或后还是原数据 fileOutputStream.write(data^99); }

    效果图前瞻:

    完整源代码:

    import java.io.*; import java.util.Scanner; //使用异或实现文件的简易加密或解密,同一数据异或一个数字两次,还是原数据 public class Test { static String s ; public static void main(String[] args) throws IOException { //输入 Scanner scanner = new Scanner(System.in); System.out.println("请输入执行操作的文件绝对路径:"); String fileName = scanner.nextLine(); System.out.println("请输入执行的操作,1-加密,2-解密"); int menu = scanner.nextInt(); //源文件 File oldFile = new File(fileName); //文件输入流,读取该文件内部数据 FileInputStream fileInputStream = new FileInputStream(oldFile); //功能输出信息 switch (menu){ case 1 : //加密 s = "-加密"; System.out.println("加密完成"); break; case 2 : //解密 s = "-解密"; System.out.println("解密完成"); break; } //新文件 File newFile = new File(oldFile.getParent(),oldFile.getName()+s); //文件输出流,输出加密后的数据到一个新建文件中 FileOutputStream fileOutputStream = new FileOutputStream(newFile); //***核心***,加解密操作 while (true){ int data = fileInputStream.read(); if(data == -1){ //数据读完 break; } //加解密。同一数据经过对同一数字异或后还是原数据 fileOutputStream.write(data^99); } //关闭输入输出流 fileInputStream.close(); fileOutputStream.close(); } }

    代码操作及结果演示:

    首先,我们现在桌面上任意创建一个txt文件作为试验 文档内容如下:

    ABCDEFGHIJKLMN这是一个测试文档

    然后运行源代码进行加密,输入加密的文档的绝对路径,选择加密

    接下来,便可以在输入的路径下看到新建的文件,打开后内容如下

    "! '&%$+*)(/.-嬡鷧囒銍凵呏鑻迢咍鋮吕

    然后运行源代码进行解密,输入待解密的文档的绝对路径,选择解密

    接下来,便可以在输入的路径下看到新建的文件,打开后内容如下

    ABCDEFGHIJKLMN这是一个测试文档

    Processed: 0.015, SQL: 8