加密解密的小项目

发布时间 2024-01-09 16:11:22作者: sixsix666

在理解这个小项目之前得先了解字节和字符以及io流的相关知识,io寒假的时候找一天抽空来整理一下io。

字节和字符:

计算机中的存储单元是字节,字节可以包含任意二进制数据,因此所有数据,包括字符,最终都会以字节的形式在计算机内存中存储。处理不同数据的时候像中文英文等等,字符通常会被转换成相应的字节表示,这个过程称为字符编码。不同的字符编码方案(例如UTF-8、UTF-16、ASCII等)会以不同的方式将字符映射到字节序列。这样,文本文件中的字符就被表示为一系列字节,这些字节可以被计算机正确地存储和处理。至于怎么转的,先不查找了感觉相当麻烦,所以归根来说任何东西在底层都是会转化为字节进行存储(后面再考证一下)

字节是由8位组成,字符是由16位组成两个字节,字节本身是由0和1组成的毕竟存储与计算机而当用io流读出的时候是因为其根据其对应的解码转化为整数给我们参考,不同的解码方式所表示的整数范围右不同这取决于原来的是用asc码编还是其他码编。

加密解密

既然想加密解密文件自然是通过对其字节进行改动,总不能在字符上改动吧,那么就通过读入读出对字节进行改动,像加1啊七七八八的

import java.io.*;

public class first {


    public static void jia () throws IOException {
        FileInputStream fip =new FileInputStream("C:\\Users\\ASUS\\Desktop\\zjx.txt");
        byte[] bt=fip.readAllBytes();
        for (int i = 0; i < bt.length; i++) bt[i] += 5;
        FileOutputStream fos =new FileOutputStream("C:\\Users\\ASUS\\Desktop\\zjx.txt");
        fos.write(bt);
        fip.close();
        fos.close();

    }
    public static void jie () throws IOException {
        FileInputStream fip = new FileInputStream("C:\\Users\\ASUS\\Desktop\\zjx.txt");
        byte[] bt = fip.readAllBytes();
        for (int i = 0; i < bt.length; i++) bt[i] -= 5;
        FileOutputStream fos = new FileOutputStream("C:\\Users\\ASUS\\Desktop\\zjx.txt");
        fos.write(bt);
        fip.close();
        fos.close();
    }
}