JSEncrypt 加密解密

将字符串加密解密

插件JSEncrypt

github地址 https://github.com/travist/jsencrypt

使用文档说明 https://www.cnblogs.com/hlweng-0207/p/12971180.html

规则:公钥加密,私钥解密,这是规则!

(注意:如果后台开发人员要求前端使用公钥解密的话(不管什么理由),怼回去)

加密

import { JSEncrypt } from 'jsencrypt'
 
// 公钥
const key = `xxxx`
 
// 加密
export function setEncrypt (msg) {
  const jsencrypt = new JSEncrypt()
  jsencrypt.setPublicKey(key)
  return jsencrypt.encrypt(msg)
}

解密

// 私钥
const privateKey = `xxxx`
 
// 解密
export function decrypt (msg) {
  let decrypt = new JSEncrypt()
  decrypt.setPrivateKey(privateKey)
  var decryptMsg = decrypt.decrypt(msg)
  return decryptMsg
}

当要解密的内容过长时,要进行分段解密

分段解密

import { b64tohex} from "jsencrypt/lib/lib/jsbn/base64";

export const decryptLong = (content:string) => {
  const enc = new JSEncrypt({});
  enc.setPrivateKey(LICENSE_KEY);  // 私钥
  let k = enc.getKey();  
  let maxLength = 128;
  try {
    let hexStr = b64tohex(content);
    if (hexStr.length > maxLength * 2) {
      let hexStrArr = hexStr.match(/.{1,256}/g);  // 128位解密。取256位
      const ct = hexStrArr.map(entry => k.decrypt(entry)).join('');
      return ct;
    } else {
      return k.decrypt(hexStr);
    }
  } catch (ex) {
    return false;
  }
};

学习交流群
在这里插入图片描述

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值