用到的js插件:
import JSEncrypt from 'encryptlong'
import JSONBing from "json-bigint"
import CryptoJS from 'crypto-js'
var pubKey = 'MIGfMA0GCSqGSIb3DQE多多少少所s8M2G8WJhsTOvMwLl7D3loYmUCqE+NfTwIDAQAB'
let priKeyTwo = 'MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJ17qUEhQ/mCDNUvbVUqnpx7LLjfCKIfWyt+HlBvLBnHdGRQYPXAUVXLEyPUuvYNCsJjaH9oVE8TR82zCWlWKhJelX+SnXxgNIS5jN7/RSMF'
var encryptor = new JSEncrypt() // 创建加密对象实例
encryptor.setPublicKey(pubKey)//设置公钥
encryptor.setPrivateKey(priKeyTwo);//设置私钥
加密:encryptor.encryptLong("需要加密的字符串")
解密:encryptor.decryptLong("需要解密的字符串")
const jsonbig=JSONBing({
storeAsString: true
})
这个需要后台加密之前先编码一次,不然对于分段加密,汉子三个字符会被切割,导致前台解密的时候,在分割点出解密出现乱码。
jsonbig.parse(decodeURIComponent(uncrypted.replace(/\+/g, '%20')))
这个是处理字符串里面value值太长以及空格展示问题
sign(需要签名的字符串)
签名:encryptor.sign(sign,CryptoJS.MD5,"md5");
解签: encryptor.verify(sign,encryptor.sign(sign,CryptoJS.MD5,"md5"),CryptoJS.MD5);