2013-07-03 127 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)?可能它會省略填充/或寫入零填充而不是正確填充。