看了网上各位大佬的 加解密 实现 有些复杂(可能涉及到高阶应用) 鄙人就只是想实现字符串的加密解密,就简单地做了如下封装
先 npm i -s crypto-js
找一个文件 放封装的代码 将其导出
import CryptoJS from 'crypto-js'
export default class Encryption {
//秘钥
lockKey: any;
constructor(key) {
this.lockKey = CryptoJS.enc.Utf8.parse(key) //十六进制数作为密钥 位数为4的倍数
}
/**
* @data 2020/7/8
* @author yc
* @descriptuin 加密
*/
lockInfo(info){
let returnStr = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(info),this.lockKey,{mode:CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7}).toString();
return returnStr
}
/**
* @data 2020/7/8
* @author yc
* @descriptuin 解密
*/
openInfo(info){
let returnStr = CryptoJS.AES.decrypt(info,this.lockKey,{mode:CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8);
return returnStr
}
}
使用
key 是 秘钥 每次new的时候可以用uuid生成 可以提高加密复杂度,建议放到后端同事返回
由于对称解密使用的算法是 AES-128-CBC
算法,数据采用 PKCS#7
填充 , 因此这里的 key
需要位数需要是4的倍数,满足2²
结果