jsencrypt 加密后端解不开,是哪里出问题了?
我用 jsencrypt 在前端加密手机号,传给 Java 后端,但后端一直报解密失败。我确认公钥是从后端拿的,格式也没动过,不知道是不是加密方式不对?
这是我的前端代码:
<script src="https://cdn.jsdelivr.net/npm/jsencrypt@3.0.0/bin/jsencrypt.min.js"></script>
<script>
const encrypt = new JSEncrypt();
encrypt.setPublicKey(-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...
-----END PUBLIC KEY-----);
const encrypted = encrypt.encrypt('13800138000');
console.log(encrypted); // 传给后端
</script>
后端用的是标准 RSA/ECB/PKCS1Padding,难道 jsencrypt 默认不是 PKCS#1 v1.5?
建杰酱~
Lv1
jsencrypt 默认就是 PKCS#1 v1.5,加密方式没问题。大概率是公钥格式的问题,把单行字符串换成带换行符的格式试试。
点赞
2026-03-04 17:06