AES暗号化 / 復号
テキストとパスフレーズを貼り付けると、選択したPHP OpenSSL暗号方式でAES暗号化または復号をすばやく実行できます。AESはNISTがFIPS 197で標準化した共通鍵ブロック暗号で、TLS、WPA2、VPN、ディスク暗号化など多くのシステムで使われます。ただし、このページは低リスクのテキスト向けの簡易ツールであり、監査済みの秘密保管庫ではありません。機密ファイルや長期保存する秘密には、age、GnuPG、7-Zipなどのオフラインツールを使ってください。
AESでテキストを暗号化する方法
-
1
OpenSSL暗号方式を選ぶ
現在の選択肢にはCBC、CTR、GCMの各バリアントがあります。CBCとCTRの出力は認証されず、このツールはGCM認証タグを保存または検証しません。
-
2
パスフレーズを入力
パスフレーズはAES鍵を作るためにSHA-256で1回ハッシュされます。PBKDF2、salt、Argon2、作業係数はないため、長くランダムなパスフレーズを使ってください。
-
3
低リスクのテキストを貼り付ける
これはサーバー側のPHP OpenSSLユーティリティです。このサイトに送信したくないパスワード、本番鍵、私的文書、秘密情報は貼り付けないでください。
-
4
Base64結果をコピー
暗号化時にはランダムなIVを作成し、未加工の暗号文の前に付けてから、結合したバイト列をBase64でエンコードします。復号には同じ暗号方式とパスフレーズが必要です。
このツールが実際に出力するもの
この実装はPHP OpenSSLを使います。暗号化時にはパスフレーズをSHA-256でハッシュし、選択した暗号方式に必要な長さのランダムなIVを生成し、テキストを暗号化して次を返します。
Base64(IV || 暗号文)
出力には、salt、PBKDF2パラメータ、HMAC、GCM認証タグは含まれません。Web Crypto、age、GnuPG、OpenSSLコマンドラインの一般的なレシピ、7-Zipが作る形式とは互換性がありません。
AESオプションの位置づけ
AESは固定128ビット(16バイト)のブロックサイズを持ち、標準の鍵長は128、192、256ビットです。ここで重要な安全性の違いは鍵長だけではなく、暗号化されたメッセージが認証されるかどうかです。
| 暗号方式オプション | このツールで知っておくこと |
|---|---|
| AES-128-CBC / AES-192-CBC / AES-256-CBC | ランダムIVとPKCS#7パディングを使う一般的なブロックモードです。改ざん検出にはHMAC-SHA-256などの別MACが必要です。 |
| AES-256-CTR | AESをストリーム風のモードとして使います。別途認証が必要で、同じ鍵で同じIV/counterを再利用してはいけません。 |
| AES-128-GCM / AES-256-GCM | GCMは通常AEADモードですが、認証タグを保存して検証する場合に限ります。このツールの出力にはそのタグがないため、認証付き暗号として信頼しないでください。 |
セキュリティ上の注意
OWASPの暗号化ストレージガイダンスでは、可能な場合は認証付き暗号、または暗号化と別MACの組み合わせが推奨されています。このツールでは次を意識してください。
- これは共通鍵暗号です - 同じパスフレーズで復号します。パスフレーズは暗号文とは別の経路で共有してください。
- 弱いパスフレーズはここでは弱い鍵になります - SHA-256は高速でsaltもないため、出力を入手した攻撃者は候補をすばやく試せます。
- CBCとCTRには認証が必要です - HMACなどのMACがなければ、攻撃者が暗号文を改ざんしても検出できない場合があります。
- 同じ鍵でIVやnonceを再利用しないでください - このツールは暗号化時に新しいランダムIVを作りますが、外部から貼り付けるデータも同じ規則に従う必要があります。
- 本当の秘密には監査済みツールを使ってください - age、GnuPG、7-Zipはファイル形式、メタデータ、認証をより慎重に扱います。
よくある質問
現在のコンポーネントはパスフレーズをSHA-256でハッシュし、そのバイト列をOpenSSLの鍵材料として使います。PBKDF2、salt、scrypt、Argon2は使わないため、短いパスフレーズや使い回しは危険です。
いいえ。CBCとCTRにはHMAC-SHA-256などの別MACが必要です。GCMは通常AEAD認証を提供しますが、このツールはBase64出力内にGCMタグを保存または検証しません。
PHP OpenSSLを実行する際、入力は当社のサーバー上で処理されます。ブラウザ内だけで動くWeb Cryptoツールではないため、価値の高い秘密、秘密鍵、機密文書は貼り付けないでください。
Base64結果にはランダムIVと、その後ろに未加工の暗号文が入ります。CBCパディングでバイトが増えることがあり、Base64はバイナリデータを約3分の1大きくします。保存形式にsaltや認証タグはありません。
このツールはテキストのみを扱い、低リスクの短い内容に限って使うのが無難です。ファイルや重要な秘密には、age、GnuPG、7-Zipなど監査済みのオフライン暗号化ツールを使ってください。
関連ツール
Atbash暗号エンコーダー
A-ZをZ-Aに対応させるヘブライ系の換字式暗号、Atbashでテキストをエンコードまたはデコードできます。同じ操作で暗号化と復号ができます。
Base64ファイルエンコーダー
あらゆるファイル(PDF、ZIP、画像、実行ファイル)をBase64テキストにエンコードし、JSON、メール、YAML、data URIへ埋め込めます。ブラウザ内でローカルに動作し、アップロードはありません。
Base58エンコーダー・デコーダー
UTF-8テキストや16進バイト列をエンコードし、Bitcoin、Ripple、Flickrの各アルファベットでBase58を安全にデコードします。
bcryptジェネレーター
平文パスワードからbcrypt hashを生成します。cost factorは4から13まで調整でき、Laravel、Django、Node、PHPと互換性があります。
シーザー暗号エンコーダー
シーザー暗号でテキストを暗号化・復号します。1-25の任意シフトに対応し、ROT13を特殊ケースとして扱い、句読点と大文字小文字を保持します。
Base32エンコーダー・デコーダー
RFC 4648アルファベットでBase32文字列をエンコード・デコードします。TOTPシークレット、大文字小文字を区別しないトークン、人が入力する識別子に便利です。