1、安装组件
npm install --save jsencrypt
2、引入组件
import JsEncrypt from 'jsencrypt'
3、对明文使用公钥进行加密
let publicKey = '1341343141234';// 公钥 let jse = new JsEncrypt();//新建JSEncrypt对象 jse.setPublicKey(publicKey);// 设置公钥 let token = jse.encrypt('这是需要加密的明文字符串');//加密 //如果需要直接对对象进行加密,需要先用JSON.stringify转化一次成字符再加密,否则解密不出来 let token = jse.encrypt((JSON.stringify({'id':1})));
我们可以创建方法供其他地方直接调用
// rsa公钥:加密 const rsaPublicKey = '';//写入自己的公钥 // rsa私钥:解密 const rsaPrivateKey'';//写入自己的私钥 /** * rsa加密 * @param {*} word * @returns */ export function setRsa(word) { const jsencrypt = new JSEncrypt(); jsencrypt.setPublicKey(rsaPublicKey); return jsencrypt.encrypt(word); } /** * rsa解密 * @param {*} word * @returns */ export function getRsa(word) { const decrypt = new JSEncrypt(); decrypt.setPrivateKey(rsaPrivateKey); return decrypt.decrypt(word); }
但当需要加密的数据比较长时,会导致加密失败,加密返回false,如下图:
这时可以使用另一个组件:encryptlong。
安装encryptlong
npm install --save encryptlong
如果字符过长,上面的方法就解密不出来了,换一种方法 (encryptor.encryptLong) 解密
// rsa公钥:加密 const rsaPublicKey = '';//写入自己的公钥 // rsa私钥:解密 const rsaPrivateKey'';//写入自己的私钥 /* 加密 */ export function encryptLong(data) { var encryptor = new Encrypt(); encryptor.setPublicKey(rsaPublicKey) const result = encryptor.encryptLong(data) return result; } /* 解密 - PRIVATE_KEY - 验证 */ export function decrypt(data) { var encryptor = new Encrypt(); encryptor.setPrivateKey(rsaPrivateKey) var result = encryptor.decryptLong(data) return result; }
参考:
https://blog.csdn.net/qq_32442967/article/details/101759723
https://blog.csdn.net/lovelessdream/article/details/103557600
https://www.zybuluo.com/octopus/note/1398009
本帖已被设为精华帖!