DES 暗号化(レガシー)

レガシーな DES を CBC・CFB・OFB・ECB で暗号化。OpenSSL des-cbc のパスフレーズまたは 8 バイトの 16 進鍵を使えます。互換性目的のみで、DES は安全ではありません。

DES は安全ではありません。56 ビット鍵は数時間で総当たり解読できます。古いデータの読み出しにのみ使い、新しいデータの保護には使わないでください。代わりに AES を使ってください。

出力は Base64 の OpenSSL「Salted__」形式です(8 バイトのランダムなソルト+暗号文)。鍵と IV はパスフレーズとソルトから導出されるため、同じテキストでも毎回結果が変わります。同等のコマンド:

openssl enc -des-cbc -md md5 -a -A -provider legacy -provider default -k '…'

すべてブラウザ内で実行されます。データがアップロードされることはありません。

DES 暗号化とは?

1977 年に登場した、64 ビットブロックで実効鍵長 56 ビットのブロック暗号 DES でデータを暗号化します。古いシステム(銀行、スマートカード、レガシーファイル)の再現や相互運用のためのもので、何かを保護するためのものではありません。

DES 暗号化の使い方

  1. 鍵の指定方法 を パスフレーズ(OpenSSL 互換) のままにして パスフレーズ を入力するか、生の鍵 + IV(16 進) に切り替えて 16 進の鍵と IV を正確に入力します。
  2. モード と パディング を選びます(OpenSSL の既定は PKCS#7 付きの CBC)。
  3. 平文 を入力または貼り付けます(バイナリデータなら入力のエンコーディングを Hex に切り替えます)。
  4. 暗号化 をクリックし、出力のエンコーディング で Base64 か Hex を選んで暗号文をコピーします。

例

入力
Raw key 133457799bbcdff1, mode ECB, padding None, hex plaintext 0123456789abcdef
出力
85e813540f0ab405

古典的な DES の既知解テスト、Hex 出力。

DES 暗号化を使うべき場面

レガシーなプロトコルやファイル形式が DES を要求する場合や、既知解テストベクターの生成にのみ使ってください。新規用途には AES を使います。Triple DES も非推奨です。

DES 暗号化の仕組み

DES は 8 バイトのブロックに対して 16 ラウンドの Feistel 構造を実行します。パスフレーズモードでは、パスフレーズとランダムなソルトから 8 バイトの鍵と IV を導出し(EVP_BytesToKey MD5 または PBKDF2-SHA256)、結果は OpenSSL の Salted__ 形式になり、openssl enc -des-cbc -provider legacy と互換です。生の鍵モードでは、8 バイト(16 進 16 文字、パリティビットは無視)の鍵と 8 バイトの IV を指定します。CBC/ECB は既定で PKCS#7 パディングを使い、CFB と OFB は 64 ビットのストリームモードです。

一般的な使用例

  • 鍵 133457799BBCDFF1 / 平文 0123456789ABCDEF などの DES テストベクターを再現する
  • レガシーな決済やスマートカードシステム向けのテストデータを作成する
  • 古典的な例でブロック暗号とモードの仕組みを教える
  • DES しか対応していない古いアプリケーション向けにデータを暗号化する

セキュリティ注意事項

DES の 56 ビット鍵は、市販のハードウェアで数時間のうちに総当たり解読できます。このツールはレガシーデータの読み取りや再現にのみ使い、新しいデータを DES で暗号化しないでください。

よくある質問

DES は安全ですか?

いいえ。56 ビットの鍵は 1998 年に公開の場で総当たり解読され(EFF DES Cracker)、現在は数時間で解読できます。実データには AES を使ってください。

OpenSSL 3 で暗号がサポートされないと出るのはなぜですか?

OpenSSL 3 では DES がレガシープロバイダーに移されました。コマンドに -provider legacy -provider default を追加してください。例:openssl enc -des-cbc -md md5 -a -A -provider legacy -provider default -k …。

鍵の長さはどれくらい必要ですか?

ちょうど 8 バイト(16 進 16 文字)です。各バイトの最下位ビットは DES が無視するパリティビットのため、そのビットだけが異なる鍵は同等です。

他のカテゴリを見る