DES 加密与解密
使用单 DES 解密或加密旧数据。
按现在的标准,DES 已不够安全——可用来读取旧数据;新数据请使用 AES 或 ChaCha20。 前往 AES
解密时还需要这个密码。输入的任何内容都不会离开本页。
OpenSSL 的默认值是 10,000。任何次数都可以:次数越多,密码越难猜;解密时必须使用相同的次数。
使用 OpenSSL 时的常用选择。需要 IV;填充为完整的分组。
openssl enc -des-cbc -pbkdf2 -iter 10000 -a -A -provider legacy -provider defaultOpenSSL 会提示输入密码;把文本粘贴进去,或加上 -in 和 -out 文件。
DES 即 1977 年发布的数据加密标准(Data Encryption Standard),它以 8 字节为一组加密,密钥 64 位,其中只有 56 位有效,另外 8 位是奇偶校验位。DES 早已能被暴力破解,但旧文件、配置和数据库中仍保存着 DES 加密的值,本页可以读写这些数据:默认 CBC 模式,也可选 ECB、CFB、OFB 或 CTR,可以使用 openssl enc -pbkdf2 格式的密码,或 16 个 hex 字符的密钥和 IV。用它恢复旧数据后,请再用 AES 重新加密。一切都在浏览器中运行:数据及其密钥不会离开你的设备;免费,无需注册。
如何解密 DES 加密的文本
- 选择“解密”后粘贴 Base64 或 hex 文本,格式会自动识别;也可以选择“加密”并输入文本。
- 输入密码,或切换到“密钥和 IV(hex)”,输入 16 个 hex 字符的密钥和 16 个 hex 字符的 IV(ECB 没有 IV)。
- 选择数据加密时所用的模式,通常是 CBC 或 ECB。只有当数据加密时没有使用 PKCS#7 填充,才打开“无填充”。
- 复制或下载结果;不是文本的字节会以 hex 显示。
功能
- 64 位密钥的单 DES:56 位密钥位加 8 位奇偶校验位
- CBC、ECB、CFB、OFB、CTR 模式;PKCS#7 填充或不填充
- openssl enc -pbkdf2 格式的密码模式,PBKDF2 迭代次数不限
- 密钥和 IV 模式:16 个 hex 字符的密钥和 IV,可手动输入或自动生成
- 给出实现相同操作的 openssl 命令,使用 OpenSSL 3 的 legacy provider
- 自动识别 Base64 或 hex 输入;非文本结果以 hex 显示,并可按字节下载
隐私安全吗?
是的。DES 在浏览器内的 WebAssembly 中运行,你解密的旧数据及其密钥或密码不会上传,也不会保存在任何地方。
常见问题
DES 加密安全吗?
不安全。56 位的密钥可以靠穷举所有可能找出:1998 年一台专用机器就做到了,如今的成本更是低得多。只在读取已经用 DES 加密的数据时使用它,然后用 AES 或 ChaCha20 重新加密。
为什么 OpenSSL 提示“Error setting cipher DES-CBC”?
因为 OpenSSL 3 把 DES 移到了默认不加载的 legacy provider 中。加载它即可:echo 'U2FsdGVkX1…' | openssl enc -d -des-cbc -pbkdf2 -iter 10000 -a -A -provider legacy -provider default。其他模式用 -des-ecb、-des-cfb 或 -des-ofb(OpenSSL 没有 DES 的 CTR 模式);密钥和 IV 模式下用 -K <16 个 hex 字符> -iv <16 个 hex 字符> 代替 -pbkdf2 -iter。
DES 密钥是什么样的?
8 个字节,写成 16 个 hex 字符。每个字节的最低位是 DES 会忽略的奇偶校验位,所以仅在这些位上不同的密钥,解密结果完全相同。IV 也是 8 字节;ECB 不使用 IV。在密码模式下,两者都从密码派生,你无需提供。
DES 和三重 DES 有什么区别?
三重 DES 用三个密钥把 DES 运行三次——192 位密钥,实际强度约 112 位——这也是它比 DES 用得更久的原因。单 DES 只有一个 56 位密钥,可以被暴力破解。如果你的密钥长 16 或 24 字节,数据就是三重 DES 加密的,请使用三重 DES 页面。
为什么得到的是无法阅读的文本?
因为某项设置与加密时不同:密码或密钥、迭代次数、模式或填充。在 CFB、OFB 和 CTR 模式下,DES 无法察觉设置不符,会返回随机字节,页面以 hex 显示;在 CBC 和 ECB 模式下,设置不符通常会直接报错。