前端 RSA加密 (解决了字节过长 中文乱码的问题)

1. 先npm下载 下载指定版本
npm install jsencrypt@3.0.0-rc.1  // 用来加密
 npm i encryptlong -S  //  为了解决字节过长 的问题
 npm install --save js-base64    //  base64 解密 为了解决中文乱码
2. 封装 rsa.service.js
import JSEncrypt from 'jsencrypt';
import Encrypt from 'encryptlong'



  //rsa加密
 export function rsaEncrypt(obj){
    if(obj == null){
      return ;
    }
    const jse = new JSEncrypt();
    jse.setPublicKey(`-----BEGIN PUBLIC KEY-----
        MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+BRO2pwfAkFUpTSUynKjHbc/ZpojfaXUU6kAeN+XTfCQlUvRhw4VC5ZtH0oD2sXgEuAYj1HsUkZPXNzAknZ6tE9q24EwlrFYmct/Hyn3JcvpA1dfanUFYHPWLiHeeNZYgA5MLXZiu0fS5X3et8e83/JkAmVOSoVrsUcbp85oIcwIDAQAB
        -----END PUBLIC KEY-----`);
    const jsonObj = JSON.stringify(obj);
    const encrypted = jse.encrypt(jsonObj);
    return encrypted;
  }
   // 解密 用于解密过长的地方
  export function decrypt(data) {
  let privateKey = `-----BEGIN PRIVATE KEY-----
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAL4FE7anB8CQVSlNJTKcqMdtz9mmiN9pdRTqQB435dN8JCVS9GHDhULlm0fSgPaxeAS4BiPUexSRk9c3MCSdnq0T2rbgTCWsViZy38fKfcly+kDV19qdQVgc9YuId541liADkwtdmK7R9Llfd63x7zf8mQCZU5KhWuxRxunzmghzAgMBAAECgYB4ql6vYXghx0XdGVkiv6rKIaiYzREj1iL8ahjXV6XBW5bUgM4heviX15h4zmsIvP+692UmwZp7IEriovAWgGUu6Utgpezfp2k5IbTJVuhkT6LUWqExkqPxfsvBkVFREJNiDt1F45nAKXS49IzVynUpufNvTBpbJ4RHmuUuRFfvuQJBAN0rCFqP2SONu6BM1M8KlR/jqV+xY5vEBOqre5Uil/th2z2DRB/MsaLCgpb1QtoUXaJjIRLE4sEwwGb3Zo+kk7UCQQDb8jiWUo3SovPLcfP/w4Vf1TvaYgIuRKCYF6GmiJBhe9wv7I0WZMPT/CKWNIQI+A1byMDNdB+9CCRB+4Gu7hSHAkEAk9zcReecDTgJs58KO61gi6RiLVbkOFRx0Q56nfc10tvWfqaO2g+4xw7xzckFO9WX0CQkDW9SBkT4rR5EFE68bQJAa/RUr/uvHq7aqIWy9FtcUHBR41ttpJYMmPooXpvy+dYYefFKQq6Mq7S6qSz3jYtqyx0a/Py9Q0QGv9gZi+nRawJAf2T6ryfkCAtYrtO2CTmr7MF2gmt7GI7O547m9exSHfjNBouzVzZoHTu8ptnMOfvY5OTZB3M5+Yjwc1fu1vhJRA==
     -----END PRIVATE KEY-----`
  const PRIVATE_KEY = privateKey
  var encryptor = new Encrypt()
  encryptor.setPrivateKey(PRIVATE_KEY) // 如果是对象/数组的话,需要先JSON.stringify转换成字符串
  var result = encryptor.decryptLong(data)
  return result
}



3. 在当前页引入
import { RsaService, decrypt, DecodeBase64} from '@/utils/rsa.service';
4. 在页面的使用
 // 在页面引用
import { RsaService, decrypt, DecodeBase64} from '@/utils/rsa.service';
 
  // 前端加密给后台
     const encrypt = rsaEncrypt(要加密的数据);
    
     
   //解密后台给的数据  后台给的数据是先包了一层rsa加密 外面又包了一层base64加密  为了解决 字节过长  中文乱码的问题
  let a = decrypt(response.data) // rsa解密 
      let Base64 = require('js-base64').Base64
      let data = Base64.decode(a) // base64 解密   2层解密是为了rsa解密的中午 乱码
      console.log(data,'data')
      return data
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值