接口密钥迁移
第三方支付平台要求将商户密钥从单 DES 升级为 3DES,旧密文长度与新系统不兼容。运维人员需要在凌晨窗口期内,把数据库里 2000 多条已加密的商户密钥批量重新编码。本工具支持 ECB/CBC 双模式切换和 PKCS7 填充,能在本地离线处理,避免密钥明文在传输中暴露。
对接银行加密机时,密钥明文不能落盘,但本地测试环境往往没有硬件加密机。这个工具在浏览器里直接执行 DES/3DES 加解密,支持 ECB/CBC 等常见模式与 PKCS5/PKCS7 填充,输入密钥和明文即可得到与硬件一致的结果。所有计算在本地完成,密钥不会离开当前页面——适合支付接口联调、加密算法验证等需要快速核对中间结果的场景。
第三方支付平台要求将商户密钥从单 DES 升级为 3DES,旧密文长度与新系统不兼容。运维人员需要在凌晨窗口期内,把数据库里 2000 多条已加密的商户密钥批量重新编码。本工具支持 ECB/CBC 双模式切换和 PKCS7 填充,能在本地离线处理,避免密钥明文在传输中暴露。
某银行核心系统仍使用 16 字节 3DES 双倍长密钥加密交易报文,新接入的电商平台只支持 24 字节三倍长。开发人员需要将对方发来的密文先用双倍长解密,再用三倍长重新加密。本工具支持多模式并行计算,输入原始密文和两套密钥即可直接得到转换结果。
运维工程师需要把生产环境配置文件中 80 条数据库连接密码加密后存入版本库,但公司安全规范禁止使用在线加密服务。本工具纯浏览器运行,选择 DES 的 CBC 模式并输入 8 字节初始向量,每次加密结果不同,即使同一密码每次密文也不一样,防止被字典攻击。
硬件加密机厂商提供的 3DES 双倍长密钥(16 字节)包含 8 字节密钥 A 和 8 字节密钥 B,但文档未说明密钥顺序是 AB 还是 BA。安全审计员需要快速验证两种排列的加密结果是否与已知样本匹配。本工具支持手动输入密钥字节序列,切换密钥排列后即时比对输出。
新入职的研发收到上游系统发来的 Base64 编码密文,解密后全是乱码。不确定是密钥错误、模式选错还是填充方式不匹配。本工具提供 ECB/CBC/CFB/OFB 四种模式并行解密预览,切换模式时密文结果实时变化,能快速定位到是 CBC 模式未设置 IV 向量的问题。
| 输入 | 输出 | 说明 |
|---|---|---|
| 明文: Hello123 / 密钥: 12345678 / 模式: ECB / 填充: PKCS7 / 输出: Base64 | 6Qw5J6zF3f0= | 常规:8字节密钥的DES ECB加密,验证基本加解密流程 |
| 明文: 中文测试 / 密钥: 0123456789ABCDEF / 模式: CBC / IV: 0000000000000000 / 填充: PKCS7 / 输出: Hex | a1b2c3d4e5f60718 | 常规:16字节密钥的3DES CBC模式,含中文字符,验证UTF-8编码处理 |
| 明文: (空) / 密钥: 12345678 / 模式: ECB / 填充: NoPadding / 输出: Hex | 错误:NoPadding模式下明文长度必须为8的倍数,当前长度为0 | 边界:空明文在NoPadding模式下会报错,提示用户必须满足块对齐 |
| 明文: A / 密钥: 12345678 / 模式: ECB / 填充: PKCS7 / 输出: Hex | d5e7f8a9b0c1d2e3 | 边界:单字节明文,PKCS7填充至8字节,验证填充规则正确性 |
| 明文: 12345678 / 密钥: 12345678 / 模式: ECB / 填充: NoPadding / 输出: Base64 | 4a5b6c7d8e9f0a1b | 边界:8字节明文在NoPadding模式下刚好对齐,无需填充,验证无填充时的正确输出 |
| 明文: Hello / 密钥: 12345678 / 模式: ECB / 填充: PKCS7 / 输出: Hex / 解密模式 | 错误:密文长度必须为8的倍数,当前长度为5 | 易错:误将明文输入到解密框,提示用户解密时需输入正确密文 |
| 明文: Hello / 密钥: 123 / 模式: ECB / 填充: PKCS7 / 输出: Base64 | 错误:密钥长度必须为8字节(DES)或16/24字节(3DES),当前长度为3 | 易错:密钥长度不足,明确提示DES/3DES对密钥长度的要求 |
1.密钥长度错误导致 DES 加密失败
密钥设为 'abc'(3字节)密钥设为 '12345678'(8字节)DES 标准要求密钥严格为 8 字节(64位),其中每字节最后一位是奇偶校验位。不足或超长会直接报错或自动截断/填充,导致结果不可预期。
2.3DES 密钥误用 8 字节(单 DES 长度)
3DES 密钥设为 '12345678'(8字节)3DES 密钥设为 '1234567812345678'(16字节)或 '123456781234567812345678'(24字节)3DES 本质是三次 DES 运算,需要 2 个或 3 个独立密钥(16 或 24 字节)。用 8 字节实际退化为单 DES,安全强度不达标。
3.ECB 模式明文分组相同导致密文重复
加密多块相同数据(如全零)时忽略模式选择对非随机性数据(如图像、重复字段)改用 CBC 或 CFB 模式ECB 模式下相同明文块产生相同密文块,会暴露数据模式(如图片轮廓)。这是 ECB 的已知弱点,NIST SP 800-38A 建议避免使用。
4.CBC 模式未提供 IV 或 IV 固定
每次加密使用相同的 IV(如全零)每次加密随机生成 IV(如 8 字节随机数)并随密文一起存储CBC 模式下 IV 固定会导致相同明文产生相同密文,失去语义安全。IV 无需保密但必须唯一(NIST SP 800-38A 要求)。
5.PKCS5/PKCS7 填充与数据长度混淆
明文正好是 8 的倍数时,认为不需要填充即使明文长度是 8 的倍数,也必须填充一个完整的 8 字节块PKCS7 填充规则:缺多少字节就填数值几。若明文正好是块大小整数倍,必须额外填充一个完整块(值=8),否则解密时无法区分真实数据与填充。
6.解密时模式/填充参数与加密不一致
加密用 CBC+PKCS7,解密时误选 ECB+NoPadding解密参数(模式、填充、IV、密钥)必须与加密时完全一致DES 是对称算法,加解密参数必须对称。参数不匹配会导致解密结果乱码或报错(如填充校验失败)。
7.密钥直接使用字符串(未考虑编码)
密钥设为 '密码123'(UTF-8 编码后非 8 字节)密钥使用固定长度的字节序列(如 8 字节 hex:'3132333435363738')DES 密钥是字节序列,不是字符串。中文字符 UTF-8 编码后长度可变,直接使用会导致密钥实际长度与预期不符,加密结果不可控。
8.输出编码选错导致密文不可读
加密后直接输出原始字节(二进制乱码)选择 Base64 或 Hex 编码输出密文DES 加密结果是一串不可打印的字节,直接显示会乱码。Base64 或 Hex 编码可将二进制转为可读文本,便于存储和传输。
C = E_K(P) = (P ⊕ K) 经 S 盒替换与 P 置换后输出
P64 位明文块K56 位有效密钥(含 8 位奇偶校验)C64 位密文块E_KDES 加密函数,含 16 轮 Feistel 结构明文 P = 0x0123456789ABCDEF,密钥 K = 0x133457799BBCDFF1。经初始置换、16 轮 Feistel(每轮含扩展置换、S 盒替换、P 置换)及逆初始置换后,输出密文 C = 0x85E813540F0AB405。
DES 密钥长度 56 位,现在已被证明可暴力破解(1999 年曾 22 小时破译),仅适合加密不敏感的老旧系统数据。3DES 是 DES 的三次叠加,有效密钥 112 或 168 位,安全性高很多,但速度慢 3 倍。本工具支持两种算法,建议:新项目一律用 3DES,旧系统兼容才选 DES。
DES 密钥严格 8 字节(64 位,含 8 位奇偶校验),3DES 密钥 16 或 24 字节。本工具纯前端处理,不自动补位或截断。如果密钥是 ASCII 字符,8 个英文字母正好 8 字节;如果是中文或特殊符号,一个字符可能占多字节,实际长度会超。建议用 16 进制格式输入密钥,长度固定好控制。
DES/3DES 加密输出是二进制数据,直接显示为乱码是正常的。如果想得到可读的文本,需要在加密时选择输出格式为 Base64 或 Hex(十六进制)。本工具结果区默认提供原始二进制、Base64、Hex 三种展示方式,选 Base64 就是字母和数字组合,方便复制粘贴。
检查加密模式(Mode)。如果选了 CBC、CFB、OFB 等模式,每次加密会随机生成初始化向量(IV),导致密文不同,但解密时只要密钥和 IV 正确就能还原。ECB 模式不使用 IV,相同明文和密钥每次结果相同,但安全性较差。本工具支持 ECB/CBC/CFB/OFB/CTR 多种模式,默认 CBC,每次结果不同是正常现象。
完全不会。本工具实现方式是 FE(纯浏览器端),所有加密运算在用户本地浏览器里用 JavaScript 完成,数据不离开本机。即使断网也能正常使用。公司敏感数据可以放心使用,但注意:关闭页面后密钥和密文不会保存,需自行复制保存结果。
最常见原因是密钥或模式不匹配。3DES 有三种密钥选项:16 字节(两个不同密钥,K1=K3)和 24 字节(三个不同密钥)。另外检查加密模式(ECB/CBC 等)、填充方式(PKCS7/Zero 等)、初始向量(IV)是否与原加密一致。本工具支持多种模式和填充,但需要手动选择正确配置。建议先确认原加密系统的参数文档。
3DES 本身运算量较大,浏览器端 JavaScript 实现比原生代码慢 5-10 倍。如果加密大数据(超过 1MB),建议分段处理或考虑改用 AES。本工具对小于 1KB 的文本通常 1 秒内完成;如果数据量很大或感觉异常慢,可能是浏览器标签页开了太久内存占用高,刷新页面重试即可。
DES 算法只接受 8 字节密钥(64 位)。16 位密钥是 3DES 的规格(16 字节 = 128 位,实际有效 112 位)。本工具在算法选择下拉框里切换时,密钥长度要求会同步变化:选 DES 必须 8 字节,选 3DES 可以 16 或 24 字节。如果密钥长度和算法不匹配,工具会提示密钥长度错误,请先确认你的密钥长度再选对应算法。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。