AES 暗号化ツール(AES-128/192/256)
AES-128/192/256 でテキストを暗号化。CBC・GCM・CTR・CFB・OFB・ECB に対応し、OpenSSL 互換のパスフレーズまたは 16 進の鍵と IV を使えます。処理はブラウザ内で完結します。
出力は Base64 の OpenSSL「Salted__」形式です(8 バイトのランダムなソルト+暗号文)。鍵と IV はパスフレーズとソルトから導出されるため、同じテキストでも毎回結果が変わります。同等のコマンド:
openssl enc -aes-256-cbc -md md5 -a -A -k '…'すべてブラウザ内で実行されます。データがアップロードされることはありません。
AES 暗号化とは?
標準ブロック暗号 AES(FIPS 197)でテキストまたは 16 進データを暗号化します。OpenSSL の「Salted__」形式でパスフレーズから鍵を導出できるため、openssl enc や CryptoJS で復号できます。コードとの相互運用が必要なときは、16 進の生の鍵と IV を直接指定することも可能です。CBC・CFB・CTR・OFB・ECB と、認証付きの GCM モードに対応しています。
AES 暗号化の使い方
- 鍵の指定方法 を パスフレーズ(OpenSSL 互換) のままにして パスフレーズ を入力するか、生の鍵 + IV(16 進) に切り替えて 16 進の鍵と IV を正確に入力します。
- モード と パディング を選びます(OpenSSL の既定は PKCS#7 付きの CBC)。生の鍵なら GCM と任意の追加認証データも選べます。
- 平文 を入力または貼り付けます(バイナリデータなら入力のエンコーディングを Hex に切り替えます)。
- 暗号化 をクリックし、出力のエンコーディング で Base64 か Hex を選んで暗号文をコピーします。
例
Key 2b7e151628aed2a6abf7158809cf4f3c, IV 000102030405060708090a0b0c0d0e0f, mode CBC, padding None, hex plaintext 6bc1bee22e409f96e93d7e117393172a
7649abac8119b246cee98e9b12e9197d
NIST SP 800-38A F.2.1 のテストベクター、Hex 出力。
AES 暗号化を使うべき場面
AES を使うアプリケーション向けのテストデータの作成、OpenSSL や CryptoJS で復号するスニペットの暗号化、モードやパディングによる出力の違いの学習に向いています。実データには GCM(または CBC と別の MAC の組み合わせ)を選んでください。CBC・CTR・CFB・OFB だけでは改ざんを検出できません。ECB は同じブロックが同じ暗号文になるため避けてください。ファイルや長期保管の秘密には age、GnuPG、プラットフォームの暗号化 API など専用のツールを使ってください。
AES 暗号化の仕組み
AES は 16 バイトのブロックを 128・192・256 ビットの鍵で暗号化します(10・12・14 ラウンド)。パスフレーズモード では 8 バイトのランダムなソルトを生成し、OpenSSL の EVP_BytesToKey(MD5、反復 1 回。openssl enc -md md5 と CryptoJS の既定)または PBKDF2-HMAC-SHA256(openssl enc -pbkdf2)で鍵と IV を導出します。出力は Salted__ + ソルト + 暗号文を Base64 にしたものです。生の鍵モード では入力した 16 進の鍵と IV をそのまま使い、暗号文だけを返します。CBC と ECB は PKCS#7(またはゼロ/なし)のパディングを使い、CFB・OFB・CTR はパディングのないストリームモードです。GCM はブラウザの Web Crypto API を使い、12 バイトのナンスと 16 バイトの認証タグを付加します。実装は NIST SP 800-38A と GCM のテストベクターに合格しています。
一般的な使用例
- ターミナルなしで
openssl enc -aes-256-cbc互換の暗号文を作成する - デバッグのために
CryptoJS.AES.encrypt(text, passphrase)の出力を再現する - バックエンド実装用の AES-GCM テストベクター(暗号文 + タグ)を生成する
- 256 ビットの生の鍵と IV で短い秘密を暗号化して設定ファイルに貼り付ける
- ECB モードが CBC や CTR と比べてパターンを漏らす理由を示す
セキュリティ注意事項
すべてブラウザ内でローカルに処理され、何もアップロードされません。MD5 による EVP_BytesToKey は互換性のために残された、弱くて高速な鍵導出です。重要なデータには、反復回数の多い PBKDF2 かランダムな生の鍵を使ってください。認証のない暗号化(CBC・CTR・CFB・OFB)は改ざんを検出しません。
よくある質問
出力は OpenSSL と互換性がありますか?
はい。パスフレーズモードの結果は openssl enc -aes-256-cbc -md md5 -a -A -k <passphrase>(MD5 による EVP_BytesToKey)と同じで、PBKDF2-HMAC-SHA256 を選んだ場合は -pbkdf2 -iter N と同じです。復号には -d を付けます。対応するコマンドはパスフレーズ欄の下に表示されます。
なぜ毎回暗号文が変わるのですか?
パスフレーズモードでは暗号化のたびに新しいランダムなソルトを使うため、鍵・IV・暗号文が変わります。これは仕様で、どの出力も同じパスフレーズで復号できます。生の鍵モードは、同じ鍵・IV・入力なら毎回同じ結果になります。
どのモードを選べばよいですか?
データの認証も行う GCM がおすすめです(何か変更されると復号に失敗します)。受信側が openssl enc しか使えない場合は CBC を選んでください。OpenSSL の enc は GCM に対応していません。同じ鍵で GCM のナンスや CTR のカウンターを再利用しないでください。
パスフレーズと生の鍵の違いは何ですか?
パスフレーズは鍵導出関数とソルトで鍵に変換され、ソルトは出力に含まれます。生の鍵は入力どおりに使われ(AES-128/192/256 でそれぞれ 16・24・32 バイト)、IV は別途共有する必要があります。