web-dev-qa-db-ja.com

opensslの問題で、派生したIV、キー、ソルトを使用してパスフレーズで暗号化されたファイルを復号化する

だから私は openssl:パスフレーズでキーとIVを回復する に従い、opensslの-Pを使用して私のソルト、キー、IVを取得することができました。

openssl enc -aes-256-cbc -in encrypted -pass "pass:password" -out m.jpg

これにより、適切なm.jpgファイルが得られるので、

openssl enc -aes-256-cbc -d -in encrypted -pass "pass:password" -out m.jpg -P

適切なソルト、キー、IVを提供します。

salt=7A01E44D968CEBD0
key=6F4C7DD6F49D0605095CAD7EA2745913E83B71A52C34F2ED260544286FDEE78A
iv =0BBD122901B13F76D03ED2EBE4E8D1CC

今私が上記のソルト、キー、IVで暗号化されたファイルを復号化しようとしたとき

openssl enc -aes-256-cbc -d -in encrypted -K 6F4C7DD6F49D0605095CAD7EA2745913E83B71A52C34F2ED260544286FDEE78A -iv 0BBD122901B13F76D03ED2EBE4E8D1CC -S 7A01E44D968CEBD0 -out m.jpg

ファイルを復号化できませんでした。たぶんフォーマットに問題がありますか?だから私はそれらを引用符に入れてみました

openssl enc -aes-256-cbc -d -in encrypted -K "6F4C7DD6F49D0605095CAD7EA2745913E83B71A52C34F2ED260544286FDEE78A" -iv "0BBD122901B13F76D03ED2EBE4E8D1CC" -S "7A01E44D968CEBD0" -out m.jpg

そして無駄に。

--helpは、

  -iv IV             IV to use, specified as a hexidecimal string
  -K key             Key to use, specified as a hexidecimal string 
  -S salt            Salt to use, specified as a hexidecimal string

これはまさに私がやったことです。 16進文字列を渡す特別な方法がない限り?

または、IV、キー、ソルトを取得するプロセスで何か問題がありましたか? (またはファイルの暗号化を解除中)?

answer が参照するように、明確にするためにopenssl encはかなりひどく、テスト以外の目的で使用することを意図したものではありません。


問題は、フォーマットの不整合にあります。パスワードで暗号化する場合、16バイトを使用しますSalted__ヘッダーには、キーの派生で使用されるソルトが含まれます。キーとIVを直接使用する場合、ソルトを指定する必要はなく、ソルトヘッダーは使用されません。パスワードで暗号化し、後でキーとIVを取得したので、復号化する前に最初の16バイトを取り除く必要があります。

$ echo test | openssl enc -aes-256-cbc -pass pass:password -base64
U2FsdGVkX1/hmWydD0WX5S5n369MQhQ6Q3w4pxLYrh8=

$ echo 'U2FsdGVkX1/hmWydD0WX5S5n369MQhQ6Q3w4pxLYrh8=' | openssl enc -aes-256-cbc -d -pass pass:password -base64 -P
salt=E1996C9D0F4597E5
key=90C6AF89C13459AD5F55B9CD72705249BC494F4539D2FA75B4C6E5B343D7FDB2
iv =3D29E6F33CBBDA72B6757B5078003B53

$ echo 'U2FsdGVkX1/hmWydD0WX5S5n369MQhQ6Q3w4pxLYrh8=' | base64 -d | tail -c+17 | openssl enc -aes-256-cbc -d -K 90C6AF89C13459AD5F55B9CD72705249BC494F4539D2FA75B4C6E5B343D7FDB2 -iv 3D29E6F33CBBDA72B6757B5078003B53
test
5
AndrolGenhald