So-net無料ブログ作成

opensslを用いた文字列の暗号化・復号 [ツール]

opensslコマンドを使った文字列の暗号化と復号のまとめ

-aes-128-cbc:AES暗号、128ビット、CBCモード
-e:暗号化
-base64:表示をBase64で表示する。
-pass pass:test:パスワードフレーズとしてtestを使用
-p:saltやKey、IVを表示

#echo "TEST"|openssl enc -aes-128-cbc -e -base64 -pass pass:test -p

結果の表示
salt=F6BEF056BA3B3E00
key=0A1430ED15866E4907BB3F98EA19F463
iv =E2FC0CE7D64F5A86034F487E7E50A5B4
U2FsdGVkX1/2vvBWujs+AKB//Shqg1mdUOMFvoNyi/o=




復号
-aes-128-cbc:AES暗号、128ビット、CBCモード
-d:復号
-base64:入力をBase64で扱う。
-pass pass:test:パスワードフレーズとしてtestを使用
-p:saltやKey、IVを表示

#echo "U2FsdGVkX1/2vvBWujs+AKB//Shqg1mdUOMFvoNyi/o="|openssl enc -d -aes-128-cbc -base64 -pass pass:test -p

結果の表示
salt=F6BEF056BA3B3E00
key=0A1430ED15866E4907BB3F98EA19F463
iv =E2FC0CE7D64F5A86034F487E7E50A5B4
TEST

元に戻ったのを確認できました。


この暗号化の結果である
U2FsdGVkX1/2vvBWujs+AKB//Shqg1mdUOMFvoNyi/o=

は、Base64でありバイナリに直して文字列化すると

Salted__コ;>…

となり、
バイナリでは、
53 61 6C 74 65 64 5F 5F F6 BE F0 56 BA 3B 3E 00 A0 7F FD 28 6A 83 59 9D 50 E3 05 BE 83 72 8B FA
と表示できます。


最初の16バイトはSaltです。

53 61 6C 74 65 64 5F 5F = S a l t e d _ _
なので、
Salted__F6 BE F0 56 BA 3B 3E 00
であり、除外する必要があります。


Saltの部分を取り除くと本来の暗号化バイト列は、
A0 7F FD 28 6A 83 59 9D 50 E3 05 BE 83 72 8B FA
です。


よって、これを復号するためには、
暗号化バイト列
A07FFD286A83599D50E305BE83728BFA


key=0A1430ED15866E4907BB3F98EA19F463

IV
iv =E2FC0CE7D64F5A86034F487E7E50A5B4


AES暗号、128ビット、CBCモード、パディングはPKCS7かな?

TEST

が出てきます。



バイト列に直すと、
54 45 53 54 0A
なので、改行文字列が含まれていました。


#echo "TEST"
は改行が入るのですね。



続いて、KeyとIVを直性指定し、Saltを使用しない方法

-aes-128-cbc:AES暗号、128ビット、CBCモード
-e:暗号化
-base64:表示をBase64で表示する。
-K:keyバイト列
-iv:IVバイト列
-p:saltやKey、IVを表示
-nosalt:Saltを使用しない


#echo "TEST"|openssl enc -aes-128-cbc -e -base64 -K "A48C3157CF75EC0A1DBA46B6622F5585" -iv "D526E07AA918B6E57123C390E5C90C24" -nosalt -p

結果の表示
key=A48C3157CF75EC0A1DBA46B6622F5585
iv =D526E07AA918B6E57123C390E5C90C24
DhRA4JXmeddc5Apquyer8w==




これを復号します。

-aes-128-cbc:AES暗号、128ビット、CBCモード
-d:復号
-base64:入力をBase64で扱う。
-K:keyバイト列
-iv:IVバイト列
-p:saltやKey、IVを表示
-nosalt:Saltを使用しない


#echo "DhRA4JXmeddc5Apquyer8w=="|openssl enc -aes-128-cbc -d -base64 -K "A48C3157CF75EC0A1DBA46B6622F5585" -iv "D526E07AA918B6E57123C390E5C90C24" -nosalt -p

結果の表示
key=A48C3157CF75EC0A1DBA46B6622F5585
iv =D526E07AA918B6E57123C390E5C90C24
TEST

復号できたのが確認できました。



opensslがどうやって鍵を生成しているかは、以下のサイトが参考になります。
http://alpha.mixi.co.jp/2007/10639/
コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。