テキストとパスフレーズを入力して AES 暗号文を作り、同じパスフレーズでその暗号文を元のテキストに戻します。
ブラウザ内でローカルに実行テキスト欄とパスフレーズ欄の 2 つだけです。「暗号化」は平文を U2FsdGVkX1 で始まる AES 暗号文に変え、「復号」はその暗号文を UTF-8 のテキストに戻します。処理はすべてページ内で完結し、ネットワークを切った状態でも往復を確認できます。
鍵はどこにも保存されません。パスフレーズと毎回ランダムなソルトから導出されるため、同じテキストと同じパスフレーズでも実行のたびに異なる文字列になります。
出力は Base64 で、先頭のバイト列をデコードすると Salted__、続いて 8 バイトのランダムなソルト、その後に暗号文が並びます。鍵と IV はパスフレーズとソルトから EVP_BytesToKey(MD5)で導出され、openssl enc がパスフレーズ暗号化に使う方式と同じです。
ソルトは実行のたびに新しくなるため、同じ文でも毎回異なる文字列になり、どちらも同じテキストに戻ります。双方向で確認済みです。openssl はこのページの出力を復号でき、このページは openssl enc -aes-256-cbc -md md5 の出力を復号できます。
アルゴリズムは AES-256-CBC で、コンテナに署名や認証タグはありません。パスフレーズの誤り、途中で切れた文字列、1 バイトの改変はすべて同じメッセージになります。ランダムな 6 か所を 1 文字ずつ改変したところ、5 件は失敗し、1 件は警告なしで読めないテキストを返しました。
鍵導出はパスフレーズに対する MD5 の 1 回だけで、PBKDF2 や Argon2 のような作業係数はありません。つまりパスフレーズそのものが弱点であり、このページは既存の AES データの再現と確認に向いていて、新しい秘密の保護には向いていません。
入力も出力もテキストのみで、ファイルやバイナリ、16 進数の入力は扱いません。復号できるのは、このソルト付きパスフレーズコンテナを CBC モードで作った場合だけです。-nosalt の出力、-K と -iv を明示した出力、ECB など別のモードの出力、他のライブラリの出力は同じメッセージで失敗します。
200 KB のテキストは Chrome で約 15 ms で暗号化されます。数メガバイトを超える場合はローカルのコマンドラインツールが適しています。