前端使用RSA加密数据传递到后端解密失败

失败原因: 前端RSA加密后的Base64位的密文,在后端接收到时,字符"+"被转为了空格,导致无法解密成功

解决: 后端解密之前先做一次字符替换,将空格转回"+",再进行解密

  1. 前端使用的是vue框架,所以直接使用了jsencrypt.js
//1.安装jsencrypt
npm i jsencrypt

//2.在main.js文件中引入
import JsEncrypt from 'jsencrypt'

//3.新建一个名为jseUtil.js的文件

const publicKey = "";//后端提供的公钥

function encrypt (str) {
    let en = new JSEncrypt();
    en.setPublicKey(publicKey);
    return en.encrypt(str)
}

export default {encrypt}

//4.在需要用到的vue组件中引入
import jseUtil from '@/common/js/jseUtil'

//5.对数据进行加密
let encryptIdCardNo = jseUtil.encrypt(this.idCardNo)
  1. 后端使用的是java通用的RSA加密方式
String decryIdCardNo = RSAEncrypt.decrypt(idCardNo.replace( " " , "+" ));
Logo

前往低代码交流专区

更多推荐