是否可以强制使用标准的XOR密码?
知道这个:
*#(I @ KI
使用XOR函数进行编码
//
std::string CStringCoding::Xor( const std::string& strIn )
{
std::string sOut = "";
for(std::size_t loop = 0; loop < strIn.size(); loop++)
{
unsigned int iCharacter = static_cast<unsigned int>(strIn[loop] ^ sKey[loop % sKey.size()]);
sOut += iCharacter;
}
return sOut;
}
我可以用经典的词表方法来强制执行吗?
我在考虑:
生成Wordlist KEY
XOR * #(I @ KI 使用KEY来解密它并获得STRING
使用KEY密钥对STRING进行异或处理
将新的CIPHERED STRING与INPUT CIPHERED STRING进行比较
如果匹配,则找到KEY
我没有测试它,只是在我采取行动之前询问并花太多时间做一些无效的事情。
感谢。
答案 0 :(得分:3)
假设您正在加密有意义的人类可读文本,如果攻击者有以下内容,则可能会破坏此XOR cipher:
Frequency analysis可以打破这两种情况。
但是,使用与消息长度相同的真正随机密钥对xor明文进行处理是很好的。它将是牢不可破的密码:One-Time Pad
OTP即使对暴力攻击也是免疫的。只需简单地按下所有键 产生所有明文,同样可能是实际的明文
答案 1 :(得分:2)
“XOR密码”是什么意思?正如@varren所说,One Time Pad是牢不可破的。但是,实际使用的大多数XOR密码不是OTP,而是Stream Ciphers,例如RC4。那些密码是易碎的,因为密钥(通常)比消息短,密钥流不是真随机的,而是伪随机的。流密码可能会受到强力攻击,因为它们不符合One Time Pad的要求。