2017-04-13 47 views
0

我有一些加密数据,使用rc2-64-cbc NO PADDING进行加密。我能够解密罚款。如何检测用于解密openssl的错误密钥rc2-64-cbc nopad

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

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

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

+1

1)没有语言C/C++。 2)这是关于openssl的,而不是C或C++语言。 – Olaf

回答

2

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

假设没有验证被添加到该消息可能的方法包括:

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

  2. 做一个随机性的测试。

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

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