web-dev-qa-db-ja.com

引数としてバイナリパスフレーズを渡すOpenSSL

このopensslコマンドは私にとっては問題なく機能しています。

openssl aes-128-ecb -d -in encrypted_base64.txt -K 4D1D75237C31E7732030C69F209F23154418373335E049C4F567C7B6D422ABD0 -base64

パスフレーズファイルで同等の処理を行うにはどうすればよいですか?私はこれを試みています:

openssl aes-128-ecb -d -in encrypted_base64.txt -pass file:data_key_plaintext.bin -base64

そして、私はbad magic numberを取得します。 data_key_plaintext.binには、動作中のコマンドの-Kのバイトが含まれます。例えば.

> hexdump data_key_plaintext.bin
0000000 4d 1d 75 23 7c 31 e7 73 20 30 c6 9f 20 9f 23 15
0000010 44 18 37 33 35 e0 49 c4 f5 67 c7 b6 d4 22 ab d0
0000020

opensslドキュメント は言います

file:pathname-パス名の最初の行はパスワードです

これはバイナリパスフレーズにどのように適用されますか?

4
russau

-passで指定されたパスフレーズは、-Kで指定された暗号化の実際のキーとは異なります。 opensslは、ハッシュ関数を使用してパスフレーズを処理し、特定のビット長の実際のキーを取得します。したがって、パスフレーズは通常、印刷可能な文字のみを使用した短くて覚えやすい文字列です。

-Pで実際のキー、IV、ソルトを確認できます。キーはaes-128-ecbで128ビットのキー長に切り捨てられることに注意してください。また、 -ecbモード は弱く、一般的な使用には適していないことに注意してください。

$ openssl aes-128-ecb -P -K 4D1D75237C31E7732030C69F209F23154418373335E049C4F567C7B6D422ABD0
salt=EA7B538100000000
key=4D1D75237C31E7732030C69F209F2315
$ openssl aes-256-cbc -P -pass pass:secret
salt=332A7608A01A609A
key=1B27C46F481CFA793C665EEFC3C5B6867735CD326840C598AA6EBCCA5829D066
iv =CE223BAEDAA625C02A397D3E1FCE8E75

によると、マニュアル-Kはファイル入力をサポートしていません。あなたはこのようなことをしたいかもしれません:

openssl aes-128-ecb -d -in encrypted_base64.txt -K $(hexdump -v -e '"%02X"' data_key_plaintext.bin) -base64
6
yaegashi