主页 > 苹果手机如何下载imtoken > 了解ASE对称加密和RSA非对称加密
了解ASE对称加密和RSA非对称加密
苹果手机如何下载imtoken 2023-07-11 05:07:06
原则:
对称加密算法:加密和解密只需要一把钥匙。
非对称加密算法:有私钥和公钥。 使用公钥加密后,必须使用私钥解密。
使用场景(前端-登录/注册):
前端加密现在需要配合AES和RSA使用。 过程如下:
浏览器向后端发送请求获取公钥,前端生成密钥和偏移量(iv比特币钱包使用了非对称加密技术,CBC方式使用)比特币钱包使用了非对称加密技术,用密钥加密密码(ASE加密),然后使用公钥key对密钥进行加密(RSA加密),后端使用私钥对加密后的密钥进行解密,再使用密钥和偏移量对密码进行解密。
代码
两个库 jsencrypt 和 crypto-js 用于前端加密。
import JSEncrypt from 'jsencrypt';
const CryptoJS = require('crypto-js');
const jsRas = new JSEncrypt();
const publicKey = 'test' //一般从后端发请求拿到的
const secretKey = 'test--test---123';//前端随机生成,实操时不要写死,一般为16位,跟后端沟通。
const iv = 'testtesttesttest';//前端随机生成,实操时不要写死,一般为16位,跟后端沟通。
const key =CryptoJS.enc.Utf8.parse(secretKey);
//对需要加密的数据进行加密
const encrypt = CryptoJS.AES.encrypt('加密的数据',key,{
iv:CryptoJS.enc.Utf8.parse(iv),
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
}).toString(); // ECB模式下不需要iv偏移量
jsRas.setPublicKey(publicKey);
const key_ = jsRas.encrypt(secretKey);//使用rsa加密用公钥publicKey加密secretKey,传递给后端
//发请求传递参数