简单加密与信息熵分析:解密与数据洞察
1. 简单异或加密解密案例
有一个加密文件,从特征来看像是使用简单的异或加密方式。该文件每字节约有 7.5 比特的熵,这一数值较高,接近压缩文件或加密良好的文件,但仍能看出一些规律,存在 17 字节的块,且在每 16 字节行有 1 字节的偏移。已知明文是英文文本,假设该文本是用 17 字节的密钥通过简单异或加密的。
尝试使用 Mathematica 查找重复的 17 字节块,代码如下:
In[]:=input = BinaryReadList["/home/dennis/tmp/cipher.txt"];
In[]:=blocks = Partition[input, 17];
In[]:=Sort[Tally[blocks], #1[[2]] > #2[[2]] &]
结果显示每个 17 字节块在文件中都是唯一的,仅出现一次。这可能是因为文件中不存在 17 字节的零间隙或仅含空格的间隙,在排版紧凑的文本中可能没有这么长的空格缩进和填充。
最初想尝试所有可能的 17 字节密钥来找到解密后为可读文本的密钥,但暴力破解不可行,因为有 256^17(约 10^40)种可能的密钥。不过可以分别测试密钥的每个字节,算法步骤如下:
- 尝试密钥第 1 个字节的所有 256 种可能。
- 解密文件中每个 17 字节块的第 1 个字节。
- 检查得到的所有解密字节是否可打印,并记录下来。
- 对密钥的所有 17 个字节都进行上述操作。
以下是实现该算法的 P
超级会员免费看
订阅专栏 解锁全文
764

被折叠的 条评论
为什么被折叠?



