jsencrypt 加密后端解不开,是哪里出问题了?

a'ゞ普涵 阅读 3

我用 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?

我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
建杰酱~
jsencrypt 默认就是 PKCS#1 v1.5,加密方式没问题。大概率是公钥格式的问题,把单行字符串换成带换行符的格式试试。

const pubKey = -----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...
-----END PUBLIC KEY-----
;
encrypt.setPublicKey(pubKey);
点赞
2026-03-04 17:06