Toolonit
  1. ホーム
  2. 暗号化
  3. 暗号化 / 復号
  4. AES

AES暗号化・復号ツール

AES-128・192・256(GCM、CBC、CTRなど)でテキストを暗号化・復号します。

暗号化の方式

復号するときにも必要です。入力した内容がこのページの外に出ることはありません。

PBKDF2の反復回数

OpenSSLの既定値は10,000です。任意の回数を指定でき、多いほどパスワードの推測に時間がかかるようになります。復号には同じ回数が必要です。

モード

OpenSSLで一般的な選択です。IVが必要で、ブロック単位にパディングします。

鍵長
出力形式
OpenSSLで同じ処理
openssl enc -aes-256-cbc -pbkdf2 -iter 10000 -a -A

OpenSSLがパスワードを尋ねます。テキストを貼り付けるか、-inと-outでファイルを指定してください。

テキストをAES-256(またはAES-128・AES-192)で、パスワードか任意の鍵とIVを使って暗号化します。Base64やhexのAES暗号文を貼り付ければ復号もできます。パスワードを使う場合、結果はopenssl enc -pbkdf2と同じ形式で、Salted__ヘッダー、ランダムな8バイトのソルト、暗号文が並び、鍵とIVはPBKDF2-HMAC-SHA256で導出されます。初期設定(AES-256・CBCモード・PKCS#7パディング・Base64出力)はopenssl enc -aes-256-cbc -pbkdf2 -aと同じで、GCM・CTR・CFB・OFB・ECBにもワンクリックで切り替えられます。結果は入力に合わせてすぐに更新されます。処理はすべてブラウザ内で行われるため、テキストもパスワードも鍵も端末の外に出ることはありません。無料で登録も不要です。

AESでテキストを暗号化・復号する方法

  1. 「暗号化」か「復号」を選びます。暗号化するテキストを入力するか、復号するBase64またはhexのテキストを貼り付けます。形式は自動で判別されます。
  2. パスワードを入力するか(「生成」で強力なパスワードを作れます)、「鍵とIV(hex)」に切り替えて、表示された長さの鍵とIVを入力または生成します。
  3. 鍵長(128・192・256ビット)とモードを選びます。復号するときは、暗号化に使ったのと同じパスワード、反復回数、鍵長、モードを指定します。
  4. 結果をコピーまたはダウンロードするか、「入れ替え」を押して結果を入力欄に移し、処理の向きを切り替えます。「OpenSSLで同じ処理」には、対応するopensslコマンドがパスワードを除いて表示されます。

主な機能

  • AES-128・AES-192・AES-256、CBC・GCM・CTR・CFB・OFB・ECBモード
  • openssl enc -pbkdf2形式のパスワード方式:Salted__ヘッダー、ランダムな8バイトのソルト、PBKDF2-HMAC-SHA256で導出する鍵とIV
  • PBKDF2の反復回数は10,000(OpenSSLの既定値)・100,000・600,000、または1,000万までの任意の回数
  • 「鍵とIV」方式では、hexの鍵とIVを自分で指定するか、「生成」でランダムに作成
  • AES-GCMは、パスワードや鍵の誤りと暗号文の改ざんを検出
  • PKCS#7パディング。CBCとECBではパディングなしも選択可能
  • Base64またはhexで出力。入力のBase64・hexは自動で判別
  • GCM以外のすべてのモードで、対応するopenssl encコマンドを表示

プライバシーは守られますか?

はい。AESはブラウザ内のWebAssemblyで動作し、パスワードはブラウザ標準のWeb Cryptoで鍵に変換されます。テキスト、パスワード、鍵がアップロードや保存されることはなく、ページに表示されるopensslコマンドにもこれらは含まれません。

よくある質問

AESのモードはどれを使えばいいですか?

新しいデータにはGCMがおすすめです。暗号化に加えて、テキストの改ざんやパスワードの誤りを検出できます。相手がGCMを読めないopenssl encを使う場合は、初期設定のCBCを選んでください。CTR・CFB・OFBは、既存のシステムに合わせる場合にだけ選びます。ECBは避けてください。同じ16バイトのブロックは同じ出力になるため、テキストのパターンが透けて見えてしまいます。

結果をOpenSSLで復号できますか?

GCM以外はできます。初期設定なら、echo 'U2FsdGVkX1…' | openssl enc -d -aes-256-cbc -pbkdf2 -iter 10000 -a -A を実行すると、OpenSSLがパスワードを尋ねます。256とcbcは使った鍵長とモード(ecb・ctr・cfb・ofb)に、-iterは反復回数に置き換え、パディングをオフにした場合は-nopadを追加します。hexで出力した場合は-a -Aを外し、先にxxd -r -pに通します。「鍵とIV」方式では、-pbkdf2 -iterの代わりに-K <鍵のhex> -iv <IVのhex>を使います。openssl encはGCMを受け付けない(AEAD暗号は非対応)ため、GCMのテキストはこのページかプログラムでしか読めません。

結果が毎回違うのはなぜですか?

パスワードで暗号化するたびに新しいランダムなソルトが選ばれ、鍵もIVも出力全体も毎回変わるためです。どの結果を復号しても同じテキストに戻ります。これは意図的な仕組みで、2つのメッセージが同じかどうかを誰にも見分けられないようにしています。「鍵とIV」方式では、鍵とIVが同じなら出力も同じになるので、メッセージごとに新しいIVを生成してください。同じ鍵でIVを使い回すと、CBCは弱くなり、CTRとGCMは安全性が失われます。

パスワードが違うと表示されるのはなぜですか?

どこかが一致していないためです。パスワード、反復回数、鍵長、モード、パディングはすべて暗号化時と同じでなければならず、テキストに記録されているのはソルトだけです。U2FsdGVkX1で始まっていても、-pbkdf2なしのopenssl encや、パスフレーズを使ったCryptoJSで作られたテキストは、このページでは読めない古い鍵導出方式(EVP_BytesToKey)を使っています。-pbkdf2を付けて暗号化し直すか、元の鍵とIVがわかっていれば「鍵とIV」方式を使ってください。

AES-256暗号は安全ですか?

はい。AESにはどの鍵長でも実用的な攻撃方法がなく、弱点になるのはパスワードです。長くランダムなパスワードを使い(「生成」で作れます)、送る側と受け取る側の両方を管理できる場合は、反復回数を600,000(OWASPが現在PBKDF2-HMAC-SHA256に推奨している値)に上げてください。テキストが改ざんされていないことも確かめたい場合は、GCMを選びます。

関連ツール