简单加密与信息熵分析
1. 简单异或加密解密
在加密领域,简单的异或加密是一种基础的加密方式。这里有一个加密文件,从其特征来看,很可能是使用简单的异或操作进行加密的。通过 ent Linux工具检测,该文件每字节约有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. 对密钥的第1个字节尝试所有256个可能的字节;
2. 解密文件中每个17字
超级会员免费看
订阅专栏 解锁全文
1635

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



