DES 加密(旧版)
用旧版 DES 加密文本,支持 CBC、CFB、OFB 或 ECB,可使用 OpenSSL des-cbc 口令或 8 字节十六进制密钥。仅用于兼容——DES 并不安全。
输出为 Base64 编码的 OpenSSL “Salted__” 格式:8 字节随机盐后接密文。密钥和 IV 由口令和盐派生,因此同一段文本每次加密结果都不同。等效命令:
openssl enc -des-cbc -md md5 -a -A -provider legacy -provider default -k '…'完全在浏览器中运行,您的数据不会被上传。
什么是 DES 加密?
使用数据加密标准 DES 加密数据,这是 1977 年的分组密码,分组为 64 位,有效密钥为 56 位。它在这里的作用是复现旧系统(银行、智能卡、遗留文件)的数据或与之互通——而不是用来保护任何东西。
如何使用 DES 加密
- 保持密钥来源为口令(兼容 OpenSSL)并输入口令,或切换到原始密钥 + IV(十六进制)并以十六进制输入准确的密钥和 IV。
- 选择模式和填充(带 PKCS#7 的 CBC 是 OpenSSL 的默认值)。
- 输入或粘贴明文(处理二进制数据时,可把输入编码切换为 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 个十六进制字符;校验位会被忽略)和 8 字节 IV。CBC/ECB 默认使用 PKCS#7 填充;CFB 和 OFB 是 64 位的流模式。
常见用例
- 复现 DES 测试向量,例如密钥 133457799BBCDFF1 / 明文 0123456789ABCDEF
- 为遗留的支付或智能卡系统创建测试数据
- 用经典示例讲解分组密码及其模式的工作原理
- 为只支持 DES 的旧应用加密数据
安全提示
DES 使用 56 位密钥,在普通硬件上几小时内就能被暴力破解。请仅用此工具读取或复现遗留数据;切勿用 DES 加密新数据。
常见问题
DES 安全吗?
不安全。它的 56 位密钥在 1998 年就被公开暴力破解(EFF DES Cracker),如今只需几小时。真实数据请使用 AES。
为什么 OpenSSL 3 提示该密码不受支持?
OpenSSL 3 把 DES 移到了 legacy provider。请在命令中加上 -provider legacy -provider default,例如 openssl enc -des-cbc -md md5 -a -A -provider legacy -provider default -k …。
密钥必须多长?
必须正好是 8 字节(16 个十六进制字符)。每个字节的最低位是 DES 忽略的校验位,因此仅在这些位上不同的密钥是等价的。