Triple DES(3DES)復号

OpenSSL や CryptoJS の Triple DES(DES-EDE3)データをパスフレーズで、または生の暗号文を 16/24 バイトの 16 進鍵と IV で復号します。ブラウザ内でローカルに動作します。

Triple DES は非推奨です(NIST は 2023 年以降、暗号化での使用を認めていません)。64 ビットブロックは Sweet32 攻撃に弱いため、互換性目的に限って使い、新しいデータには AES を選んでください。

出力は 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 復号の使い方

  1. 暗号化時と同じ 鍵の指定方法 を選びます。U2FsdGVkX1…(「Salted__」)のデータなら パスフレーズ(OpenSSL 互換)、生の暗号文なら 生の鍵 + IV(16 進) です。
  2. パスフレーズ(と同じ 鍵導出)、または 16 進の鍵と IV を入力します。
  3. 送信側と同じ モード と パディング を設定し、暗号文(Base64 または Hex)を貼り付けます。
  4. 復号 をクリックします。出力はテキスト(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 の内部に保管された鍵はブラウザへエクスポートできません。

他のカテゴリを見る