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



我有一些加密的数据,这些数据是使用 rc2-64-cbc NO PADDING 加密的。我能够很好地解密。

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

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

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

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

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

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

  2. 对随机性进行测试。

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

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

您可以获取纯文本,计算校验和,然后加密两者。解密密文后(即使使用错误的密钥(,请尝试再次计算破译文本的校验和,我相信它会失败。

最新更新