web-dev-qa-db-ja.com

OpenSSLを使用してAES-256CBCを暗号化/復号化するにはどうすればよいですか?

Linux(Ubuntu)を初めてインストールし、パッケージOpenSSLもダウンロードしました。コマンドラインも開いていくつかのコマンドを試しましたが、どれも機能しませんでした。

だから私が持っているのは初期ベクトルです:5a04ec902686fb05a6b7a338b6e07760、暗号文もあります:14c4e6965fc2ed2cd358754494aceffaおよび対応する平文:We're blown. Run

今、私はあなたが最初のベクトルと平文を入力するコマンドがなければならないと想像します、そして結果としてあなたは暗号文を得るべきです...?別の可能性:初期ベクトルと暗号文を入力し、平文を取得します。

しかし、コマンドラインでこれを行うにはどうすればよいですか?私はすでにコマンドを試しました:

openssl aes-256-cbc -e -nosalt -a -in  input.txt -out  output.txt -k key -iv ivkey

input.txt:このファイルをデスクトップに作成し、プレーンテキストを書き込んだ。約 output.txt、私もそれを作成してデスクトップに置きました、それは空です。このコマンドを使用した後、何も起こりません!

他に役立つコマンドはありますか?また、インターネットで役立つツールを見つけようとしましたが、何も機能していないようです。 :/

1
eyesima

入力テキストを準備します。

echo "We're blown. Run" >input.txt

エンコード:

openssl enc -aes-256-cbc -nosalt -e \
        -in input.txt -out input.txt.enc \
        -K '2222233333232323' -iv '5a04ec902686fb05a6b7a338b6e07760'

元のテキストを標準出力にデコード:

openssl enc -aes-256-cbc -nosalt -d \
        -in input.txt.enc \
        -K '2222233333232323' -iv '5a04ec902686fb05a6b7a338b6e07760'

注1:for -Kおよび-iv渡す必要があります 16進数のみで構成される文字列 。この文字列は、次のようなバイナリファイルから取得できます。

hexdump -e '16/1 "%02x"' FILE_WITH_KEY

注2:ここではAES-256のキーを取得するアルゴを使用しました256ビット長。しかし、-K8バイト/ 16 hex/64ビットのみです。この場合、opensslは秘密鍵にゼロを埋め込むため、上記の例では次の鍵を使用しました:'2222233333232323000000000000000000000000000000000000000000000000'。これは重大な弱点です実際にはもっと強力なキーを使用してください。同じ話は-iv、ただし長さは、選択したアルゴリズムのモードとブロック長によって異なります 関連する質問を参照

4
SergA