我编写了一个简短的 C++ 程序来对文件进行 XOR 加密,我可以将其用于一些个人文件(如果它被破解,那没什么大不了的 - 我只是防止临时查看者)。基本上,我采用 ASCII 密码并重复将密码与文件中的数据进行异或。
但现在我很好奇:如果有人想破解这个问题,他们会怎么做?会需要很长时间吗?它是否取决于密码的长度(即大O是什么)?
XOR 加密的问题在于,对于长时间运行的相同字符,很容易看到密码。此类长行最常见的是文本文件中的空格。假设您的密码是 8 个字符,并且文本文件的某些行中有 16 个空格(例如,在 ASCII 图形表的中间)。如果您只是将其与密码进行异或,您将看到输出将具有重复的字符序列。攻击者只会寻找任何此类字符,尝试猜测原始文件中的字符(空格将是第一个尝试的候选字符),并从重复组的长度中得出密码的长度。
二进制文件可能更糟,因为它们通常包含重复的序列0x00
字节。显然,与这些进行异或运算是无操作的,因此您的密码将以纯文本形式显示在输出中!具有长空序列的非常常见的二进制格式的示例是.doc
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)