MooTool

Handy tool set for developers

View on GitHub

DIFF-008:对称密钥字节长度与 Java Hutool 路径

原行为(Electron)

对称 AES/DES 使用 CryptoJS ECB + PKCS#7,密钥按 Unicode 码点 截断/右侧补字符 0 后再 UTF-8 编码;SM4 用 sm-crypto 同样的 16 码点密钥 hex。密文为小写 Hex。RSA/SM2 密钥与密文为 DER/点坐标的标准 Base64。SM2 密文为 C1C3C2,C1 不含 04 前缀。

Java 版 Hutool SecureUtil.generateKey 会把任意口令派生成算法密钥,与 Electron 字节不一致。

本产品行为

对齐 Electron:ECB + PKCS#5/7、Hex 密文、码点截断/补零后 UTF-8。AES/SM4 要求恰好 16 字节、DES 恰好 8 字节;码点长度合格但 UTF-8 变长(例如 16 个汉字)时 拒绝,并在界面说明,不静默截断字节。SM2 加解密自动兼容有/无 04 的 C1。RSA 默认生成 2048 位 PKCS#1 DER Base64;解析同时接受 PKCS#1 与 X.509/PKCS#8。摘要/Base64/Base32 与 Electron 样本字节一致。

理由

规格以 Electron 为兼容基线,且要求非 ASCII 密钥有明确成功/拒绝,而不是沿用 Java Hutool 的口令派生。

证据

CryptoEngineTest:Electron AES/DES/SM4/MD5/SHA-256/SM3/Base64/Base32 固定样本;Electron RSA-512 与 SM2 密文/签名可解密、可验签;自生成 RSA/SM2 往返;汉字密钥 invalid-key

受影响范围