テキストとパスフレーズを入力し、「暗号化」で OpenSSL 形式のソルト付きコンテナを作り、「復号」で既存の DES 暗号文を読み戻せます。DES は56ビット鍵の古い暗号で、用途は既存データの確認に限られます。
ブラウザ内でローカルに実行テキスト欄とパスフレーズ欄が1つずつあります。「暗号化」を押すと OpenSSL 形式のソルト付きコンテナができ、「復号」を押すと既存の DES 暗号文を読み戻せます。結果はボタンの下に表示されます。
処理はページ内の CryptoJS で完結し、テキストとパスフレーズは送信されません。DES は1970年代の56ビット暗号なので、このページは古い DES データを読む・再現するためのもので、新しい秘密の保護には向いていません。
出力は CryptoJS と openssl enc が作るコンテナです。8バイトの Salted__(Base64 では U2FsdGVkX1)、8バイトのランダムなソルト、その後に暗号文が続きます。DES は8バイトブロックの暗号で、CBC モードと PKCS#7 パディングを使うため、末尾のブロックで1〜8バイトが追加されます。2バイトと3バイトの入力はどちらも24バイトのコンテナになりました。
ソルトは実行のたびにランダムなので、同じテキストとパスフレーズでも毎回違う文字列になります。同じ出力になったら不具合です。
鍵と IV は、パスフレーズとソルトから MD5 ベースの EVP_BytesToKey で導出します。これは openssl enc が -md md5 で使う導出と同じです。このページのコンテナは openssl enc -d -des-cbc -md md5 -a -k "パスフレーズ" で復号でき、その OpenSSL コマンドで作った暗号文はこのページに貼り付けて読み戻せます。両方向とも確認済みです。
DES の鍵は56ビットで、OpenSSL もこの鍵導出が非推奨だと警告します。それでもこのページがあえて旧方式を維持するのは、既存の DES データがこの方式を使っているためです。
パスフレーズが違う場合、コンテナではないテキスト、改変された暗号文は、いずれもパディング検査で失敗します。ページは前の結果を残さず、出力を空にしてメッセージを表示します。入力欄かパスフレーズが空の場合も、実行前に同じように拒否します。
コンテナには MAC も認証タグもないため、復号できた値はデータであって、真正性の証明ではありません。DES は古いデータの読み出しや再現だけに使い、新しい用途には現代の認証付き暗号を使ってください。