Triple DES(3DES)復号
OpenSSL や CryptoJS の Triple DES(DES-EDE3)データをパスフレーズで、または生の暗号文を 16/24 バイトの 16 進鍵と IV で復号します。ブラウザ内でローカルに動作します。
出力は Base64 の OpenSSL「Salted__」形式です(8 バイトのランダムなソルト+暗号文)。鍵と IV はパスフレーズとソルトから導出されるため、同じテキストでも毎回結果が変わります。同等のコマンド:
openssl enc -des-ede3-cbc -d -md md5 -a -A -k '…'すべてブラウザ内で実行されます。データがアップロードされるこ とはありません。
Triple DES 復号とは?
3DES の暗号文を復号します。OpenSSL の Salted__ Base64 形式(openssl enc -des-ede3-cbc や CryptoJS.TripleDES.encrypt の出力)にも、16 進の鍵と IV を使う生のバイト列にも対応します。誤った鍵は PKCS#7 パディングの検査で検出されます。
Triple DES 復号の使い方
- 暗号化時と同じ 鍵の指定方法 を選びます。
U2FsdGVkX1…(「Salted__」)のデータなら パスフレーズ(OpenSSL 互換)、生の暗号文なら 生の鍵 + IV(16 進) です。 - パスフレーズ(と同じ 鍵導出)、または 16 進の鍵と IV を入力します。
- 送信側と同じ モード と パディング を設定し、暗号文(Base64 または Hex)を貼り付けます。
- 復号 をクリックします。出力はテキスト(UTF-8)のままにするか、平文がバイナリなら Hex に切り替えます。
例
U2FsdGVkX1+fAUPBci9K1t4/ytC3mL9Lj5o+GNDlCXc= (passphrase "secret", CBC)
Hello, World!
openssl enc -des-ede3-cbc -md md5 -a -k secret で生成。
Triple DES 復号を使うべき場面
レガシーシステムのデータ読み取り、取引先のテストベクターの検証、連携のデバッグに使ってください。その後は、データを AES に移行することを検討しましょう。
Triple DES 復号の仕組み
Salted__ の入力ではソルトを読み取り、パスフレーズから 24 バイトの鍵と 8 バイトの IV を再導出し(EVP_BytesToKey MD5 または PBKDF2-SHA256)、選択したモードで D(K1, E(K2, D(K3, block))) として復号します。生の入力では、指定した鍵(16 または 24 バイト)と IV をそのまま使います。テキストを表示する前に、最後のブロックのパディングを検証します。
一般的な使用例
- レガシーなデータベースのエクスポートから 3DES の値を復号する
- CryptoJS.TripleDES の暗号文の中身を確認する
- 決済システムの 3DES テストベクターを検証する
- データが 3DES か単一の DES かを調べる
セキュリティ注意事項
Triple DES は非推奨です。NIST は 2023 年以降の暗号化での使用を認めておらず、64 ビットブロックのため長いセッションは Sweet32 誕生日攻撃に弱くなります。互換性のためだけに使ってください。
よくある質問
復号に失敗します。何を確認すべきですか?
パスフレーズ、鍵導出(MD5 か PBKDF2)、モード、そして生の鍵なら鍵が 16 バイトか 24 バイトか、IV が正しいかを確認してください。IV なしの ECB を使うシステムもあります。
既定設定で作った OpenSSL の出力を読めますか?
OpenSSL 1.1 以降で -md md5 を付けない場合、鍵は SHA-256(PBKDF2 なし)で導出されますが、これは未対応です。暗号化時に -md md5 か -pbkdf2 を使ってください。
HSM の鍵でも使えますか?
生の鍵のバイト列が分かっていれば使えます。生の鍵 + IV(16 進) を選んで入力してください。HSM の内部に保管された鍵はブラウザへエクスポートできません。