前言:由于项目需求,需要对一些重要信息进行RSA加密再传给服务器,网上找了挺久相关内容,终于解决,总结一下。
一、引入jsencrypt.js文件
jsencrypt.js下载:https://download.csdn.net/download/qq_40146789/20371505
值得一提的是,若是引入正常的jsencrypt.js,uni-app项目会报错,上面的jsencrypt.js是经过修改,uni-app可用不报错的。
二、使用
1. 将下载好的jsencrypt.js放在一个专门的文件夹,例如 utils/jsencrypt.js
2. 为了方便使用,在同一目录下新建文件 rsa.js:
import { JSEncrypt } from './jsencrypt'
// 加密公钥
const key = `---`
// 加密
export function rsaEncrypt (msg) {
const jsencrypt = new JSEncrypt()
jsencrypt.setPublicKey(key)
const encryptMsg = jsencrypt.encrypt(msg)
return encryptMsg
}
// 解密私钥
const privateKey = `---`
// 解密
export function rsaDecrypt (msg) {
const decrypt = new JSEncrypt()
decrypt.setPrivateKey(privateKey)
const decryptMsg = decrypt.decrypt(msg)
return decryptMsg
}
RSA加密解密需要用到公钥和私钥,在线生成公钥私钥:http://web.chacuo.net/netrsakeypair
生成并使用后记得保存好公钥私钥。
3. 在第二步已经导出了加密(rsaEncrypt)和 解密(rsaDecrypt)的方法,在需要用到的地方导入使用即可。
import { rsaEncrypt, rsaDecrypt } from '@/utils/rsa'
// 明文
let msg = '我是被传输的重要明文信息哈哈哈哈哈'
// 加密后的密文
let encryptMsg = rsaEncrypt(msg)
console.log(encryptMsg )
// 解密后的明文
let decryptMsg = rsaDecrypt(encryptMsg)
console.log(decryptMsg)
如有错漏,望指出。
总结于2021.07.20。