0

是否可以暴力破解标准的 XOR 密码?

知道这一点:

*#(我@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;
}

我可以用经典的单词表方法来暴力破解吗?

我在想:

生成单词表 KEY

XOR * #(I@KI用一个 KEY 来解密它并获得一个 STRING

用密钥对字符串进行异或运算以对其进行加密

将新的 CIPHERED STRING 与 INPUT CIPHERED STRING 进行比较

如果它们匹配,则已找到 KEY

我没有测试它,只是在我采取行动之前询问并花费太多时间做一些不起作用的事情。

谢谢。

4

2 回答 2

3

假设您正在加密有意义的人类可读文本,如果攻击者有以下情况,就有可能破解此XOR 密码:

  1. 使用密钥重用编码的密文(例如 loop % sKey.size() )
  2. 2个用相同密钥编码的密文

频率分析可以打破这两种情况。

但是可以使用与消息长度相同的真正随机密钥对明文进行异或运算。这将是牢不可破的密码:一次性密码

OTP 甚至不受暴力攻击。尝试所有密钥只会产生所有明文,所有这些都同样可能是实际的明文

于 2013-07-17T08:34:05.760 回答
2

“异或密码”是什么意思?正如@varren 所说,One Time Pad 是牢不可破的。但是,实际使用的大多数 XOR 密码不是 OTP,而是Stream Ciphers,例如RC4。这些密码是可破解的,因为密钥(通常)比消息短,而且密钥流不是真正随机的,而是伪随机的。流密码可能会受到蛮力攻击,因为它们不符合 One Time Pad 的要求。

于 2013-07-17T15:07:35.757 回答