最近一个vue项目要求所有密码数据需要使用RSA非对称加密传输,以为挺简单,结果开发过程中还是遇到了些问题,简单做个笔记。同时也希望可以帮助到遇到同样问题的道友门。
概念
对称加密(算法):在加密和解密时使用的是同一个秘钥;
非对称加密(算法):与对称加密算法不同的是,非对称加密算法需要两个不同的密钥(公钥和私钥)。公钥和私钥是一对,用公钥加密的数据,只有用对应的私钥才能解密。
实际开发过程中,后台生成一对公私钥,私钥存在服务器,把公钥给前端,前端加密后传给后端,这是相对比较安全的做法。
实现—生成密钥
重点来了:使用jsencrypt实现RSA非对称加解密
因为这里直接在前端加解密,所以需要一对现成的密钥,我们通过密钥在线生成器得到:
密钥密钥有了,该上代码了
首先安装jsencrypt依赖包
npm install jsencrypt
然后在需要使用的文件中引入JSEncrypt,我是将所有工具函数都封装在一个js文件的,我就直接在该文件中引入,我看也有人是在main.js中引入的。
import { JSEncrypt } from 'jsencrypt'
// 或者下面这种方式引入
// import JSEncrypt from 'jsencrypt/bin/jsencrypt'
实现—加密
/**
* RSA非对称加密
* @param