如何检测用于解密openssl rc2-64-cbc nopad的错误密钥

时间:2017-04-13 01:31:49

标签: encryption openssl evp-cipher

我有一些加密数据,使用rc2-64-cbc NO PADDING加密。我能够解密罚款。

问题:即使加密的内容是用错误的密钥加密的,我的解密也不会出错,而是解密为一些垃圾值,因为它的rc2和我认为没有填充。

我试过openssl Linux命令提示符和我的C / C ++程序(使用EVP_ * API调用)。

是否有任何openssl选项/方法来检测使用错误的密钥? (命令行或EVP_ * C / C ++ API调用)

2 个答案:

答案 0 :(得分:4)

除非在加密数据中添加了某种形式的身份验证,否则无法确定。最好的方法是寻找“有意义”的解密,解密后的数据要么正确,要么显示为无法与随机字节区分开的字节序列。

假设没有向消息添加身份验证,可能的方法包括:

  1. 在消息中的某个已知位置有一些已知正确的字节,这被称为 crib ,一个例子是在二战中德国天气报告以可预测的文本开始。

  2. 测试随机性。

  3. 如果数据是文本检查无效字符,如0x00 - 0x1f。

  4. 考虑适用于您的数据的其他测试。

答案 1 :(得分:1)

您可以采用纯文本格式,计算校验和,然后对两者进行加密。解密密文(即使使用了错误的密钥)后,请再次尝试为解密后的文本计算校验和,我相信它会失败。