RSA加密与解密的流程与方法
来源:互联网 发布:以史为镜,可以知兴替 编辑:程序博客网 时间:2024/06/06 02:43
加密——RSA前端与后台的加密与解密
什么是RSA加密
RSA加密算法是一种非对称加密算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要肜另一个才能解密,利用对极大整数做因数分解的难度决定了RSA算法的可靠性
RSA的算法涉及三个参数,n、e1、e2
其中,n是两个大质数 p、q的积,n的二进制表示所占用的位数,就是所谓的密钥长度
e1和e2是一对相关的值,e1可以任意取,但要求与(p-1) * (q-1)互质;再选择e2,要求(e2 * e1) = 1 (mod(p-1) * (q-1))
(n,e1),(n,e2)就是密钥对,其中(n,e1)为公钥,(n,e2为公钥)
RSA加密解密算法完全相同,设A为明文,B为密文,则:A = B ^ e2 (mod n) ;B = A ^ e1 (mod n)
e2和e1可以互换使用,即:
A = B ^ e1 (mod n); B = A ^ e2 (mod n)
RSA算法原理可见:
阮一峰RSA加密算法一
阮一峰RSA加密算法二
RSA流程
1.后端生成publicKey与privateKey
2.后端返回publicKey给前端
3.前台使用publicKey给敏感字段加密
4.使用post方式发送数据给后端
5.后端使用publicKey与pvivateKey进行解密。
使用加密库cryptico为数据加密
1.需要加密时先请求后台的getrsa接口,后台会返回加密公钥
api.js 管理接口地址// 获取 rsa'getrsa': '/api/safe/getrsa',
2.定义加密方法
// services.js 配置请求方式与请求函数名称export function getRsa() { return http.get(apis.getrsa)}// 判断是生产环境才进行加密export function encrypt(val) { if (process.env.NODE_ENV === 'production') { return getRsa().then( res => { // 定义公钥为接口返回结果 const publicKey = res // 实例化加密系数 const rsakey = new RSAKey() // 根据 rsa加密公式 m^e = c (mod n),使用公钥(n,e)对m进行加密,m即为加密指数'10001' rsakey.setPublic(publicKey, '10001') // 返回加密后的数据 return rsakey.encrypt(val) }) } else { // 如果不是生产环境,直接把promise状态变为已完成,返回成功状态(即不加密但会对执行加密成功后的函数)。 return Promise.resolve(val) }}
3.为数据加密
// 引入加密函数import { encrypt, postLoginInfo } from 'services'// 登录login() { const params = {} // 使用Promise.all()方法给数据加密,promise.all()访求提供了并行执行异步操作的能力,并且在所有异步操作执行完毕后才执行回调。all接收一个数组参数,里边的值最终都返回promise对象。然后放进一个数组中传给then,用values接收 Promise.all([ encrypt(this.password), encrypt(this.phoneNum) ]).then(values => { params.pwd = vlaues[0] params.mobile = values[1] postLoginInfo(params).then((res) => { this.$router.push('/') }).catch((err) => { console.log(err) }) }).catch((err) => { console.log(err) })}
阅读全文
1 0
- RSA加密与解密的流程与方法
- RSA的加密与解密
- RSA加密与解密
- RSA加密与解密
- Rsa 加密与解密
- RSA加密与解密
- RSA加密与解密
- RSA加密与解密
- RSA加密与解密
- .net中RSA的加密与解密
- .net中RSA的加密与解密
- RSA加密与解密的算法
- RSA加密解密的原理与应用
- rsa加密与解密算法
- rsa加密与解密算法
- IOS rsa加密与解密
- RSA加密解密与签名
- RSA简单加密与解密
- Masonry学习之链式属性
- javascript JSON.parse() JSON.stringify() 和jquery.parseJOSN() 使用与区别
- 大数据显示:中国的程序员是世界上最牛的程序员
- Winsock库接口详解
- mysql常用函数
- RSA加密与解密的流程与方法
- 一文读懂「用户行为数据」的采集、分析和应用
- 更改select样式,点击div触发select
- 爬虫技术的门道,这篇文章总结的最全
- hdu2553(八皇后问题+打表)
- SQL语句的运用——数据库操作
- 国内免费发布信息平台哪个好?
- tensorflow--WINDOW下CPU版本的安装
- ibatis.net winform搭建