2016-09-22 3 views
9

Ich habe heruntergeladen und kompiliert openssl-1.1.0.Verschlüsselung/Entschlüsselung funktioniert nicht gut zwischen zwei verschiedenen OpenSSL-Versionen

kann ich verschlüsseln und entschlüsseln die gleiche exe von openssl mit (wie here)

[email protected]:~/openssl-1.1.0$ LD_LIBRARY_PATH=. ./apps/openssl aes-256-cbc -a -salt -in file.txt -out file.txt.enc 
enter aes-256-cbc encryption password: 123 
Verifying - enter aes-256-cbc encryption password: 
[email protected]:~/openssl-1.1.0$ LD_LIBRARY_PATH=. apps/openssl aes-256-cbc -a -d -in file.txt.enc -out file.txt.dec 
enter aes-256-cbc decryption password: 123 

Diese openssl verwendet: libcrypto.so.1.1, libssl.so.1.1

Wenn ich versuche, mit dem openssl auf meinem Ubuntu installiert zu entschlüsseln, die verwendet: /lib/x86_64-linux-gnu/libssl.so.1.0.0, /lib/x86_64-linux-gnu/libcrypto.so.1.0.0

ich einen Fehler:

[email protected]:~/openssl-1.1.0$ openssl aes-256-cbc -a -d -in file.txt.enc -out file.txt.dec2 
enter aes-256-cbc decryption password: 123 
bad decrypt 
140456117421728:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:539: 

Was kann das verursachen? Dank

+0

Geben Sie Ihre Testwerte, Schlüssel, iv, unverschlüsselte Daten, verschlüsselte Daten unmittelbar vor und nach den Verschlüsselungs-/Entschlüsselungsvorgängen ein. Auch der Schlüssel ist zu kurz, AES unterstützt nur 128-, 192- und 256-Bit-Schlüssel, Sie verlassen sich auf Tastenfüllungen, die nicht Teil des AES-Standards sind. – zaph

+1

Stack Overflow ist eine Website für Programmier- und Entwicklungsfragen. Diese Frage scheint off-topic zu sein, weil es nicht um Programmierung oder Entwicklung geht. Siehe [Welche Themen kann ich hier fragen?] (Http://stackoverflow.com/help/on-topic) in der Hilfe. Vielleicht [Super User] (http://superuser.com/) oder [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/) wäre ein besserer Ort, um zu fragen. Siehe auch [Wo veröffentliche ich Fragen zu Dev Ops?] (Http://meta.stackexchange.com/q/134306) – jww

Antwort

37

Der Standard Digest wurde von MD5 SHA256 in Openssl 1,1

[email protected]:~$ echo "it-works!" > file.txt 
[email protected]:~$ LD_LIBRARY_PATH=~/openssl-1.1.0/ openssl-1.1.0/apps/openssl aes-256-cbc -a -salt -in ~/file.txt -out ~/file.txt.enc -md md5 
enter aes-256-cbc encryption password: 
Verifying - enter aes-256-cbc encryption password: 
[email protected]:~$ LD_LIBRARY_PATH=~/openssl-1.0.1f/ openssl-1.0.1f/apps/openssl aes-256-cbc -a -in ~/file.txt.enc -d 
enter aes-256-cbc decryption password: 
it-works! 

Die hässliche Details

Versuchen Sie es mit -md md5 geändert:

Das eingegebene Passwort wird nicht verwendet, wie durch AES (oder andere Verschlüsselung), aber der Befehl leitet implizit einen Schlüssel daraus ab. Die Schlüsselableitung verwendet Nachricht, dass verdauen wurde in OpenSSL 1.1 Use SHA256 not MD5 as default digest.

Falls geändert möchten Sie es einfaches Passwort halten und beginnen nicht mit der Unordnung Keying Kampf (-K, -IV) zwingen, genau das gleiche mit verdauen - md

+3

Wir verbrachten den größten Teil des Tages damit, dass unser Code kaputt war. Stolperte über deine Antwort. Rettete den Tag! – starfry

+0

Wie erzwinge ich md5 in C++ - Programm? – Adnan

+0

Ja, das Digest -md md5 funktioniert, aber bessere Lösung ist die erneute Verschlüsselung mit -md sha256 (und das gleiche für die Entschlüsselung), die sicherer ist als md5 daher die Änderung in der Standard-Digest auf neue Versionen von openssl –

3

Getestet habe ich die AES-Verschlüsselung und Entschlüsselung mit Version 1.1.0a (von openssl.org heruntergeladen) und die Version 1.0.2g-fips (aus meinem ubuntu 16,04)

Wenn die -p Option auf mit 2 verschiedene Versionen von openssl, die IV und Schlüssel sind unterschiedlich:

$ LD_LIBRARY_PATH=~/openssl-1.1.0a/ ~/openssl-1.1.0a/apps/openssl aes-256-cbc -a -p -salt -in file -out file.enc 
enter aes-256-cbc encryption password: 
Verifying - enter aes-256-cbc encryption password: 
salt=6A80B2A3B4CFE048 
key=637E17094DF7892A7AFC14957EAA13991DFFD3273A2459EDA613F3AD8A406C38 
iv =6AC7CE5C9AADC6C46C633BF5124DAFBF 

$ openssl aes-256-cbc -a -d -p -in file.enc -out file.dec 
enter aes-256-cbc decryption password: 
salt=6A80B2A3B4CFE048 
key=6220AF2E25CB0B5D9994A0A1B05503D82AC5B0B4C9015E241CACBF8BF62DAC77 
iv =2DC04EF29AA57478EBE606DF87277EA6 
bad decrypt 
140557073118872:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:592: 

ich vermute, eine andere Ableitung von Schlüssel und IV, bezogen auf das Salz mit den zwei Versionen.

Wenn Sie diesen Entschlüsselungsfehler loswerden möchten, können Sie die Option -salt entfernen und die Optionen -K für den Schlüssel und -iv in Ihrem openssl-Befehl verwenden.

Verwandte Themen