AES Encryption / Decryption
鍵とIVを指定してAES(CBC・GCM・CTR)でテキストを暗号化・復号します。パスフレーズでの暗号化にも対応しています。
概要
AESでテキストを暗号化・復号するツールです。鍵の指定方法を「鍵とIVを直接指定」と「パスフレーズ」から選べます。
「鍵とIVを直接指定」では、暗号方式(AES-CBC・AES-GCM・AES-CTR)・鍵(16バイトでAES-128、32バイトでAES-256)・IV(初期化ベクトル)を指定します。Java・PHP・Node.js・OpenSSLなど、他のシステムで暗号化したデータの復号や、実装した処理の結果の照合に使えます。
「パスフレーズ」では、パスフレーズからPBKDF2(100,000回反復)で鍵を導出し、AES-256-GCMで暗号化します。暗号化のたびにランダムなsalt・IVが生成され、salt・IV・暗号化データをまとめた本ツール独自のBase64文字列として出力します。
使い方
- 1
モードで「暗号化」または「復号」を選択し、平文または暗号文を入力します。
- 2
「鍵の指定方法」を選びます。他のシステムとやり取りする場合は「鍵とIVを直接指定」を選び、暗号方式・鍵の形式・暗号文の形式・鍵・IVを入力します(暗号化時は「IVをランダム生成」も使えます)。
- 3
「パスフレーズ」を選んだ場合は、パスフレーズを入力します。
- 4
「暗号化する」または「復号する」ボタンをクリックすると結果が表示されます。
入力例・出力例
入力
平文: Hello, World! / AES-CBC / 鍵(Hex): 2b7e151628aed2a6abf7158809cf4f3c / IV: 000102030405060708090a0b0c0d0e0f
出力
暗号文(Hex): 73591223788e116d0593254421262658
利用シーン
Java・PHP・Node.jsなどで暗号化されたデータを、鍵とIVを指定して復号し、中身を確認する
アプリケーションで実装したAES暗号化処理の結果が、同じ鍵・IVで正しい暗号文になっているか照合する
他人と共有する前に、テキストをパスフレーズで簡易的に暗号化しておく
AES-GCMの暗号化・復号の仕組みを学習・検証する
よくある質問
パスフレーズを忘れた場合、復号できますか?
いいえ。パスフレーズはどこにも保存されないため、忘れてしまうと暗号文を復号する方法はありません。
同じテキストを2回暗号化すると、同じ暗号文になりますか?
いいえ。暗号化のたびにランダムなsalt・IVが生成されるため、同じ平文・パスフレーズでも毎回異なる暗号文になります。これは意図した動作です。
入力したテキストやパスフレーズは外部に送信されますか?
いいえ。暗号化・復号処理はすべてブラウザ内のWeb Crypto APIで完結します。鍵・IV・パスフレーズはどこにも保存されません。
パディング方式は何ですか?
AES-CBCではPKCS#7パディング(JavaのPKCS5Paddingと同じ結果)を使います。AES-GCM・AES-CTRはパディングを使いません。
AES-GCMの認証タグはどこにありますか?
暗号文の末尾に16バイトの認証タグが付いた形式で入出力します。JavaやOpenSSLと同じ形式です。Node.jsのようにタグを別に扱う場合は、暗号文の後ろにタグを連結してから入力してください。
AES-192やECBモードには対応していますか?
いいえ。AES-192はChromeのWeb Crypto APIが対応していないため、ECBは同じ平文ブロックが同じ暗号文になり安全でないうえWeb Crypto APIでも提供されていないため、対応していません。
注意点
本ツールで生成した暗号文・パスフレーズを、実際の機密情報の長期保管に使用することは推奨しません。
パスフレーズ方式の暗号文は本ツール独自の形式です。他のシステムとやり取りする場合は「鍵とIVを直接指定」を使ってください。
同じ鍵で同じIVを使い回すと、AES-GCM・AES-CTRでは安全性が大きく損なわれます。暗号化のたびに「IVをランダム生成」で新しいIVを使ってください。
AES-CTRのカウンターは、16バイトのIV全体を1つの数として1ずつ増やします(OpenSSL・Javaと同じ方式)。
関連ツール
テキストからSHA-1・SHA-256・SHA-384・SHA-512のハッシュ値を生成(ジェネレーター)します。
RSA公開鍵・秘密鍵のペアをPEM形式で生成します。