DES 暗号化(レガシー)
レガシーな DES を CBC・CFB・OFB・ECB で暗号化。OpenSSL des-cbc のパスフレーズまたは 8 バイトの 16 進鍵を使えます。互換性目的のみで、DES は安全ではありません。
出力は Base64 の OpenSSL「Salted__」形式です(8 バイトのランダムなソルト+暗号文)。鍵と IV はパスフレーズとソルトから導出されるため、同じテキストでも毎回結果が変わります。同等のコマンド:
openssl enc -des-cbc -md md5 -a -A -provider legacy -provider default -k '…'すべてブラウザ内で実行されます。データがアッ プロードされることはありません。
DES 暗号化とは?
1977 年に登場した、64 ビットブロックで実効鍵長 56 ビットのブロック暗号 DES でデータを暗号化します。古いシステム(銀行、スマートカード、レガシーファイル)の再現や相互運用のためのもので、何かを保護するためのものではありません。
DES 暗号化の使い方
- 鍵の指定方法 を パスフレーズ(OpenSSL 互換) のままにして パスフレーズ を入力するか、生の鍵 + IV(16 進) に切り替えて 16 進の鍵と IV を正確に入力します。
- モード と パディング を選びます(OpenSSL の既定は PKCS#7 付きの CBC)。
- 平文 を入力または貼り付けます(バイナリデータなら入力のエンコーディングを Hex に切り替えます)。
- 暗号化 をクリックし、出力のエンコーディング で 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 が無視するパリティビットのため、そのビットだけが異なる鍵は同等です。