2013-07-03 4 views
58

PEM_read_bio_PrivateKey() gibt NULL zurück, wenn ein privater Schlüssel im ECB-Modus von DES EDE verschlüsselt wird. Das Problem tritt in EVP_DecryptFinal_ex():PEM_read_bio_PrivateKey() gibt NULL nur im ECB-Modus zurück

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

Wenn die gleichen privaten Schlüssel von DES EDE im CBC-Modus verschlüsselt ist, diese Funktion OK funktioniert.

Ich überprüft, dieses Problem ist reproduzierbar auf openssl 0.9.8r/y-Versionen (ohne FIPS). Wenn openssl mit FIPS erstellt wird, tritt das Problem nicht auf.

Was verursacht dieses Verhalten?

Danke!

+1

Willkommen bei crypto.SE. Ihre Frage ist wahrscheinlich besser geeignet, um in der Mailingliste [openssl-users] (http://www.openssl.org/support/community.html) gefragt zu werden. – archie

+2

haben Sie sichergestellt, dass [die entsprechenden Algorithmen laden?] (Http://www.openssl.org/docs/crypto/OpenSSL_add_all_algorithms.html) – javex

+0

Ja, ich rufe OpenSSL_add_all_algorithms() auf. Außerdem habe ich überprüft, ob die richtige Verschlüsselung zum Lesen eines privaten Schlüssels ausgewählt ist. Sieht merkwürdig aus, dass es nur mit FIPS funktioniert. – Alex

Antwort

1

Wenn Sie OpenSSL-Quellen betrachten, kann dies nur passieren, wenn das Auffüllen verschlüsselter Daten ungültig ist. Ist dies bei verschiedenen Schlüsseln der Fall, und können Sie eine Probe angeben? Und welches Werkzeug wird verwendet, um solche Schlüssel zu erzeugen (d. H. Die gleiche OpenSSL oder nicht)? Vermutlich lässt es padding/oder schreibt null padding statt der richtigen.