IO流练习(加密和解密文件)

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);:将读取到的字节 b5 进行异或运算,并将结果写入到 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);:将读取到的字节 b5 进行异或运算,并将结果写入到 c.txt 文件中。
  • fos2.close();fis2.close();:关闭文件流,释放资源。
  • System.out.println("解密完毕");:输出解密完成的提示信息。
  • System.out.println("程序结束");:输出程序结束的提示信息。
相关推荐
侠客行031714 小时前
Mybatis连接池实现及池化模式
java·mybatis·源码阅读
蛇皮划水怪14 小时前
深入浅出LangChain4J
java·langchain·llm
羊群智妍16 小时前
2026 AI搜索流量密码:免费GEO监测工具,优化效果看得见
笔记·百度·微信·facebook·新浪微博
灰子学技术16 小时前
go response.Body.close()导致连接异常处理
开发语言·后端·golang
老毛肚16 小时前
MyBatis体系结构与工作原理 上篇
java·mybatis
风流倜傥唐伯虎17 小时前
Spring Boot Jar包生产级启停脚本
java·运维·spring boot
二十雨辰17 小时前
[python]-AI大模型
开发语言·人工智能·python
Yvonne爱编码17 小时前
JAVA数据结构 DAY6-栈和队列
java·开发语言·数据结构·python
Re.不晚17 小时前
JAVA进阶之路——无奖问答挑战1
java·开发语言
你这个代码我看不懂17 小时前
@ConditionalOnProperty不直接使用松绑定规则
java·开发语言