加密规则: 1. 每个数字(int),对应一个字母。
2. 32 位 int,其中最高 5 位为偏移量,剩余的位为偏移后的字节信息。
3. 存储文件时不再直接存储数字,而是按字节存储二进制信息,32 位 int 数字按照字节存储,存储顺序从低到高,即 intel 硬件的“小头”方式。
举例:字母A,编码是65,二进制位是01000001,扩展为32位后变成
0000 0000 0000 0000 0000 0000 0100 0001 (0x41)
设偏移量为5,那么偏移后的32位信息是:
0000 0000 0000 0000 0000 1000 0010 0000 (0x820)
最高5位用于存储偏移量信息5(二进制位0101)
0010 1000 0000 0000 0000 1000 0010 0000 (0x28000820)
存储文件时顺序:
1. 0010 0000(最低字节)
2. 0000 1000(次低字节)
3. 0000 0000(次高字节)
4. 0010 1000(最高字节)
对于这个加密后数字,在文件中看到的二进制位是:
0010 0000 0000 1000 0000 0000 0100 1000
注意:对于每个int,其偏移量是随机生成的,不一定是5,存储在最高的5位中。
以下是加密代码:
以下是解密代码: