前端端使用非对称加密解密
前言:
什么是非对称加密?什么是对称加密?
对称加密算法在加密和解密时使用的是同一个秘钥;而非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。
A要传给B一句话(需要保密),就由B生成一对公钥和私钥存好,公钥就好比一把锁,钥匙就是私钥。B只需要把锁给A,A把那句话锁起来,交还给B,在这过程中,即使大家都能看到公钥(锁),也是不知道那句话是啥的,然后B拿到锁好的机密,拿只有自己才有的私钥(钥匙)解开,这个差不多就是非对称加密。
工作流程?
我这边就分为前后端来阐述:
首先,我在后端生成一对密钥(公钥和私钥)并将公钥向其前端公开。
然后,前端得到公钥后,使用该公钥对咬进行加密的信息进行加密(比如账户密码),加密后将加密的信息再传给后端
后端根据自己保存的另一把专用密钥(私钥)对加密后的信息进行解密,就能得到原信息,这边后端只能用其专用密钥(私钥)解密由对应的公钥加密后的信息。
这样即使攻击者截获了传输的密文,并得到了前端的公钥,也无法破解密文,因为只有后端保存的私钥才能解密密文
这是相对比较安全的做法。
实操
这边我前端部分采用的是jsencrypt包,我这边是使用Vue脚手架,所以示例代码也是脚手架的
前端部分
先安装个依赖包
npm install jsencrypt --save
然后引入
import JSEncrypt from 'jsencrypt/bin/jsencrypt'
使用它
let $JSEncrypt = new JSEncrypt() // 创建实例// 后端给的公钥
let pubKey =
`-----BEGIN PUBLIC KEY-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END PUBLIC KEY-----`this.$JSEncrypt.setPublicKey(pubKey) // 设置公钥// 将加密的密文传给后端
let res = await API$login({account: $JSEncrypt.encrypt(this.account), // 要加密的内容pwd: $JSEncrypt.encrypt(this.pwd) // 要加密的内容
});
杂:前端解密过程
this.$JSEncrypt.setPrivateKey(privateKey)
let getWord = this.$JSEncrypt.decrypt(rsaPassWord) // 解密
console.log(getWord) // 输出,可以在控制台看到解密得到的字段
然后后端要解密密文做判断
后端我这边用的是nodeJS
安装依赖包
npm install node-jsencrypt --save
这边不用装前端的那个依赖包,会报错,因为那个包只支持游览器环境
使用它
const jsencrypt = require("node-jsencrypt");
const $JSEncrypt = jsencrypt();
let priva teKey =`-----BEGIN PRIVATE KEY-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-----END PRIVATE KEY-----`
$JSEncrypt.setPrivateKey(privateKey)console.log($JSEncrypt.decrypt(account)) // 解密内容
console.log($JSEncrypt.decrypt(pwd)) // 解密内容
前端端使用非对称加密解密相关推荐
- java rsa 117_java实现RSA非对称加密解密
之前写过一篇java实现AES对称加密解密 在对密码加密传输的场景下 RSA非对称加密解密可能会更加适合. 原理就是后台生成一对公钥和私钥,公钥给前端用来加密,后台用私钥去解密,保证了传输过程中就算被 ...
- 服务端与客户端加密解密思路
服务端与客户端加密解密思路 我的参考 我的理解 我的参考 源码编码 文档思路 我的理解 AES 对称加密,即加密解密使用共同的key AES是DES的升级版 RSA 非对称加密,即加密解密使用一对不同 ...
- java大话西游单机版,【大话西游】手工架设服务端+双客户端+加密解密全套工具...
[大话西游]手工架设服务端+双客户端+加密解密全套工具_站长网(Downzz.com) 安装说明: 服务器系统 Windows Server 2008 R2 1.首先第一步把需要的运行工具以及所需工具 ...
- 工具类:登录密码的加解密(jsencrypt实现前端RSA非对称加密解密
定义工具类:utils/jsenscrypt.js import JSEncrypt from 'jsencrypt/bin/jsencrypt.min'// 密钥对生成 http://web.cha ...
- API接口加密—非对称加密解密之分段加解密
引言: 对称加密:双方使用的同一个密钥,既可以加密又可以解密,这种加密方法称为对称加密,也称为单密钥加密. 优点:速度快,对称性加密通常在消息发送方需要加密大量数据时使用,算法公开.计算量小.加密速度 ...
- CryptoAPI与openssl RSA非对称加密解密(PKCS1 PADDING)交互
(以下代码中都只做测试用,有些地方没有释放内存...这个自己解决下) 1.RSA非对称的,首先提供一个供测试用的证书和私钥的数据 1)pem格式的证书和私钥(公私钥是对应的)的base64编码 [cp ...
- html前端的几种加密/解密方式
一.base64加密 前端用base64加密和解密的使用方法,只需要两个函数就可以了.一个是加密:window.btoa(),一个是解密:window.atob(),看例子: var str = &q ...
- RSA非对称加密解密概念
1.RSA加密解密在线计算网站 网站1:https://www.bejson.com/enc/rsa/ 网站2:https://the-x.cn/cryptography/Rsa.aspx 2.PKC ...
- 前端使用pako.js加密解密
之前在网上搜到的关于pako加密解密方法,其中加密方法有点问题,和解密方法不配套. 整理了下我自己最后修改的代码 zip = (str) => { let binaryString = pako ...
- php 如何使用openssl_encrypt进行aes非对称加密解密
一.DES介绍 DES 是对称性加密里面常见一种,全称为 Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法.密钥长度是64位(bit),超过位数密钥被忽略. ...
最新文章
- nginx_lua_waf安装测试
- 算法导论一个让人很不爽的地方
- 10_隐马尔科夫模型HMM1_统计学习方法
- c#操作json 使用JavaScriptSerializer
- pyspark分类算法之决策树分类器模型实践【decisionTreeClassifier】
- 20200128每日一句
- 网络安全学习--WEB服务器
- python解析器下载_pak文件解析-pak文件解析工具下载Python版-西西软件下载
- matlab利用gui谐波分析,matlab中fft谐波分析
- 笔记本电脑没有Pause键,远程桌面无法全屏
- 费马小定理费马大定理
- ROS系统下完成TCP通信 C语言编程
- SikuliX教程-下载与安装
- 学习笔记之09for循环8个小练习
- 对云计算机的想法,我对云计算技术的看法
- 2021年--中国工商银行软件开发中心--社会招聘(春季)
- Cesium中文教程-3D模型(3D Models)
- Linux嵌入式系统简答题复习
- CISSP认证流程1
- [人生]一些人生智慧
热门文章
- python绘制中国_如何用Python画一个中国地图?
- 《三国空城计》何为真知己真智慧
- Pytorch基础知识之pth文件与DataLoader数据加载器
- Zotero安装与同步配置(PC+ipad双平台)
- 我的日程安排表(理解代码)学习记录Java
- 清蒸野猪佩奇自带LastDance
- 【嵌入式系统开发12】在stm32F103C8T6环境下,用HAL库,采用中断模式编程,控制LED的高亮与熄灭
- ubuntu 20.04 设定固定IP地址碰到的坑
- 利用webmagic爬去招聘信息,并输入到Hbase数据库中
- 断点续传视频无法播放问题,合块发现视频无法播放