2013-07-03 123 views
58

PEM_read_bio_PrivateKey()返回NULL如果私钥在ECB模式下由DES EDE加密。问题发生在EVP_DecryptFinal_ex()PEM_read_bio_PrivateKey()仅在ECB模式下返回NULL

4128:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:330:

如果相同的私钥由DES EDE CBC模式加密,该功能的工作原理确定。

我检查过,这个问题在openssl 0.9.8r/y版本(没有FIPS)上是可重现的。如果使用FIPS构建openssl,则问题不会发生。

是什么导致了这种行为?

谢谢!

+1

欢迎加入crypto.SE。您的问题可能更适合在[openssl-users](http://www.openssl.org/support/community.html)邮件列表上提问。 – archie

+2

您是否确定[加载相应的算法?](http://www.openssl.org/docs/crypto/OpenSSL_add_all_algorithms.html) – javex

+0

是的,我打电话给OpenSSL_add_all_algorithms()。我还检查了选择了正确的密码来读取私钥。看起来很奇怪,它只适用于FIPS。 – Alex

回答

1

查看OpenSSL源代码,只有在加密数据中的填充无效时才会发生这种情况。这是否发生在不同的键上,你能提供一个样例吗?而且,用什么工具生成这样的密钥(即是否有相同的OpenSSL)?可能它会省略填充/或写入零填充而不是正确填充。