2016-09-22 19 views
9

openssl-1.1.0をダウンロードしてコンパイルしました。2つの異なるopensslバージョン間で暗号化/復号化がうまく機能しない

私は

[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 

hereのように)暗号化とopensslの同じexeファイルを使用して復号化することができる。このopensslは使用しています:libcrypto.so.1.1, libssl.so.1.1

を、私は私のUbuntuにインストールopensslを解読しようとすると、その使用しています:

/lib/x86_64-linux-gnu/libssl.so.1.0.0, /lib/x86_64-linux-gnu/libcrypto.so.1.0.0

私はエラーを取得します

[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: 

これはどうしてですか?とに-pオプションを使用する場合 おかげ

+0

暗号化/復号化操作の直前と直後に、テスト値、キー、iv、プレーンデータ、暗号化されたデータを入力します。また、鍵は短くすることですが、AESは128,192、および256ビットの鍵だけをサポートしています。あなたはAES標準の一部ではない鍵埋め込みに頼っています。 – zaph

+1

Stack Overflowは、プログラミングおよび開発に関する質問のサイトです。この質問は、プログラミングや開発に関するものではないので、話題にはならないようです。ヘルプセンターの[ここではどのトピックを参照できますか](http://stackoverflow.com/help/on-topic)を参照してください。おそらく、[スーパーユーザ](http://superuser.com/)や[Unix&Linux Stack Exchange](http://unix.stackexchange.com/)の方が良いかもしれません。 [Dev Opsについての質問はどこに投稿しますか?](http://meta.stackexchange.com/q/134306) – jww

答えて

37

ダイジェストが

OpenSSLを1.1にSHA256にMD5から変更されたデフォルトは醜い詳細

[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! 

-MD MD5を使用してみてください:あるとして

が入力されたパスワードが使用されていませんエース(または他の暗号化)では、コマンドは暗黙的にキーを派生します。鍵の導出は、メッセージは、あなたがそれ簡単なパスワードを維持したい、といじり起動しないことが場合、opensslの1.1 Use SHA256 not MD5 as default digest.

に変更されたダイジェスト使用キーイング(-K、-iv)ちょうど同じことがでダイジェスト強制武道 - md

+3

コードが壊れていると思って、一日のうちに一番の時間を費やしました。あなたの答えは間違っていました。その日を救った! – starfry

+0

C++プログラムでmd5を強制する方法は? – Adnan

+0

はい、ダイジェストを指定する-md md5はより良い解決策ですが、より良い解決策はmd5よりも安全な-md sha256を使用して再暗号化することです(解読も同じです)ので、opensslの新しいバージョンのデフォルトダイジェストの変更 –

3

私は

を(openssl.orgからダウンロード)バージョン1.1.0aとAESの暗号化と復号化をテストし、(私のUbuntu 16.04から)バージョン1.0.2g-FIPS opensslの2つの異なるバージョンでは、IVと鍵が異なっている:

$ 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: 

私は2つのバージョンとの塩に基づくキーとIVの異なる派生を疑います。

この復号化エラーを取り除きたい場合は、-saltオプションを削除し、そのキーには-K、そして-ivのオプションを使用することができます。

関連する問題