AES 暗号化

AES で暗号化または復号します。一方向のダイジェストは ハッシュ生成

何を暗号化するページか

AES はブロック暗号です。このページはブラウザで ECB、CBC、CTR、OFB、CFB、GCM を実行します。鍵は 16、24、32 バイトです。パスワードの一方向フィンガープリントは ハッシュ生成 です。

使い方

  1. 入力を貼ります。モードは CBC、パディングは pkcs7padding、文字セットは UTF-8 から始まります。
  2. 鍵と IV の形式はテキスト、入力形式はテキスト、出力形式は hex です。ECB では IV を隠し、GCM ではタグ長と AAD を出して nopadding に固定します。
  3. 暗号化と復号のボタンで実行します。例を表示すると hello、CBC、pkcs7padding、UTF-8、鍵 1234567890abcdef、IV 1234567890abcdef になり、hex は 7e6347a62a0a976373e79b1bd586363d です。
  4. 入れ替えは結果を入力に戻し、入力形式をさっきの出力形式にします。出力形式をテキストにして復号すると、同じ鍵と IV で hello に戻ります。
  5. すべてクリアは欄を空にし、CBC、pkcs7padding、UTF-8、テキスト形式、hex 出力に戻します。結果をコピーは出力をコピーします。

鍵、IV、パディング、タグ

テキストは文字セットでバイトになります。hex と Base64 はすでにバイトなので、文字セットは使いません。鍵は 16、24、32 バイト、つまり AES-128、AES-192、AES-256 です。UTF-8 の 1234567890abcdef は 16 バイトです。

CBC、CFB、OFB、CTR の IV は 16 バイトです。ECB に IV はありません。GCM は空でない IV を受け、通常は 12 バイトです。pkcs5padding と pkcs7padding はここでは同じで、1 から 16 バイト足して 16 の倍数にします。nopadding はそのままなので、ECB と CBC は 16 の倍数が必要です。GCM は nopadding だけです。

GCM のタグは暗号文の末尾に付きます。タグ長の初期値は 128 ビットです。AAD は検証され、暗号化はされません。復号はテキスト入力を拒み、暗号化はテキスト出力を拒みます。鍵、IV、タグ、パディングが違うと失敗します。

使う場面

  • CBC の暗号文を別の AES ツールと突き合わせる。
  • hex の末尾にタグがある GCM を読む。
  • 鍵をテキスト、hex、Base64 で切り替える。

質問

pkcs5 と pkcs7 はなぜ同じですか?

AES のブロックは 16 バイトです。どちらも同じカウントのバイトで最後のブロックを埋めます。

同じ文の hex は毎回同じですか?

モード、パディング、鍵、IV が同じなら同じです。例を表示の結果は 7e6347a62a0a976373e79b1bd586363d です。