AES加密

关于前后端分离传输数据加密的AES

最近项目中传输数据用到数据加密,通过百度知道存在对称加密与非对称加密,在这里只介绍AES对称加密!

AES加密要用到Cryptojs插件,用 npm 下载:npm i crypto-js

Cryptojs官网:https://www.npmjs.com/package/crypto-js

新建一个js文件;导入Crypto插件

import CryptoJS from ‘crypto-js/crypto-js.js’

创建一个加密函数

export function enterpassword(key, iv, password) {
key = CryptoJS.enc.Utf8.parse(key) //在引入CryptoJS时,初始化密钥(key)与偏移量(iv)的时候,必须对其进行转码,不然会报错,报错的原因可能是iv为undefined?
iv = CryptoJS.enc.Utf8.parse(iv)
var encryptedData = CryptoJS.AES.encrypt(password, key, {
iv: iv,
mode: CryptoJS.mode.CBC,//这是AES加密的模式,常用的有ECB,CBC等
padding: CryptoJS.pad.Pkcs7//填充模式,加密位数不够的时候填充方式
});
var encryptedBase64Str = encryptedData.toString(); //encryptedData为一个对象,需要将其进行tostring,转化成字符串才是我们需要的值
return (encryptedBase64Str)
}

创建一个解密函数

export function outpassword(key, iv, password) {
key = CryptoJS.enc.Utf8.parse(key)
iv = CryptoJS.enc.Utf8.parse(iv)
//这里可以不用对解密参数进行转码!!直接拿过来用
var decryptedata = CryptoJS.AES.decrypt(password, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 })
decryptedata = decryptedata.toString(CryptoJS.enc.Utf8)//转化出来的参数为一个对象,还是要给他转化成String类型的字符串,CryptoJS.enc.Utf8为转化成utf-8编码格式的字符串形式,不然看不懂!
console.log(decryptedata)
}

自用,可能哪里解释的有点离谱,望海涵 tip(上边的代码直接复制就可以用!)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值