AES暗号化・復号ツール
AES-128・192・256(GCM、CBC、CTRなど)でテキストを暗号化・復号します。
復号するときにも必要です。入力した内容がこのページの外に出ることはありません。
OpenSSLの既定値は10,000です。任意の回数を指定でき、多いほどパスワードの推測に時間がかかるようになります。復号には同じ回数が必要です。
OpenSSLで一般的な選択です。IVが必要で、ブロック単位にパディングします。
openssl enc -aes-256-cbc -pbkdf2 -iter 10000 -a -AOpenSSLがパスワードを尋ねます。テキストを貼り付けるか、-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でテキストを暗号化・復号する方法
- 「暗号化」か「復号」を選びます。暗号化するテキストを入力するか、復号するBase64またはhexのテキストを貼り付けます。形式は自動で判別されます。
- パスワードを入力するか(「生成」で強力なパスワードを作れます)、「鍵とIV(hex)」に切り替えて、表示された長さの鍵とIVを入力または生成します。
- 鍵長(128・192・256ビット)とモードを選びます。復号するときは、暗号化に使ったのと同じパスワード、反復回数、鍵長、モードを指定します。
- 結果をコピーまたはダウンロードするか、「入れ替え」を押して結果を入力欄に移し、処理の向きを切り替えます。「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を選びます。