AES 解密失败,一般是哪里没对上?
按出现频率排:①分组模式不同(CBC 需要 IV,ECB 不需要,GCM 还需要认证标签);②填充方式不同(PKCS7 与 Zero Padding 结果不同);③密钥长度不匹配,AES-128/192/256 分别要求 16/24/32 字节;④输入编码搞混,密文是 Base64 还是 Hex;⑤密钥本身被当成字符串而不是十六进制解析。逐项和对方文档核对一遍基本都能解决。
参数全部显式可调,密钥和明文只在浏览器内存里参与运算。
点开即用,多数工具已预填示例数据。
加解密工具最怕两件事:一是把密钥贴到会上传的网站上,二是参数对不齐,导致「同样的算法,别人能解我不能解」。这一组工具把参数全部显式暴露出来——模式、填充、IV、输出编码——并且全部在浏览器本地运算。
覆盖三类需求:对称加密(AES、SM4)用于本地数据保护;非对称与签名(RSA、SM2、HMAC、JWT)用于接口鉴权和身份验证;编码转换(Base64、URL 编码、Unicode、摩斯)严格说不是加密,只是换一种表示形式,任何人都能还原。
国密系列按 GM/T 0003—2012(SM2)、GM/T 0004—2012(SM3)、GM/T 0002—2012(SM4)实现,用于对接政务、金融类要求国产密码算法的系统。
联调接口签名
按对方文档在 HMAC 工具里拼接待签串,比对生成的签名与服务端日志是否一致。
排查登录态
把前端拿到的 JWT 粘进解析工具,直接看 payload 里的 exp 和 iss,确认是过期还是签发方不对。
对接政务系统
用 SM2 验签、SM4 解密核对报文,确认本地实现与对方一致。
处理乱码
从日志里扒出 \u4e2d\u6587 这类转义串,用 Unicode 工具还原成中文。
按出现频率排:①分组模式不同(CBC 需要 IV,ECB 不需要,GCM 还需要认证标签);②填充方式不同(PKCS7 与 Zero Padding 结果不同);③密钥长度不匹配,AES-128/192/256 分别要求 16/24/32 字节;④输入编码搞混,密文是 Base64 还是 Hex;⑤密钥本身被当成字符串而不是十六进制解析。逐项和对方文档核对一遍基本都能解决。
不能。MD5 是单向散列,不是加密算法,从摘要无法还原原文。网上所谓「MD5 解密」都是彩虹表——事先算好海量常见字符串的摘要再反查,只对弱口令有效。也正因为如此,MD5 和 SHA-1 都不应再用于密码存储,请在服务端改用 bcrypt、scrypt 或 Argon2。
不算。Base64 只是把二进制数据编码成 64 个可打印字符,任何人都能一步还原,没有密钥概念。它的用途是让二进制内容能安全穿过只接受文本的通道,比如邮件附件、JSON 字段、Data URL。如果需要保密,要在 Base64 之前先做真正的加密。
解析在浏览器本地完成,token 不会上传。但要理解 JWT 的性质:header 和 payload 只是 Base64URL 编码,本身就是明文可读的,任何拿到 token 的人都能看到里面的内容。所以 payload 里不该放密码、身份证号这类敏感信息。需要验签时请使用测试密钥。
SM2 是基于椭圆曲线的非对称算法,用于签名验签和密钥交换,地位类似 RSA 或 ECDSA;SM3 是摘要算法,输出 256 位,地位类似 SHA-256;SM4 是分组对称加密,分组和密钥都是 128 位,地位类似 AES-128。国内政务、金融和等保测评项目常要求使用这一套算法。
受密钥长度限制。1024 位密钥用 PKCS#1 v1.5 填充时,单次最多加密 117 字节;2048 位是 245 字节。所以实际工程里几乎不用 RSA 直接加密业务数据,而是用它加密一个随机生成的 AES 密钥,再用 AES 加密正文,这叫混合加密。签名场景则是先算摘要再对摘要签名,不受长度限制。