AES加密方式是现在比较流行的对称加密方式,它是通过一个加密解密双方持有共同密匙进行加密解密,这个密匙必须保证其安全性,泄露的话就会造成密文内容的暴露。
本着简单使用的原则,就不过多赘述了,如果需要了解的同学可以去百度看看他的介绍。
先声明,本文采用crypto-js这个包结合vue来实现,换到其他技术栈也是差不多的。
步骤一:下载包 crypto-js
npm i crypto-js 或者yarn add crypto-js
步骤二:在使用的页面进行引入
import CryptoJs from "crypto-js"
步骤三: 创建加密函数
encrypt(wordStr, keyStr, ivStr) {
//将key的utf8转为wordArray数据
let key = CryptoJs.enc.Utf8.parse(keyStr);
//将iv的utf8转为wordArray数据
let iv = CryptoJs.enc.Utf8.parse(ivStr);
//将word的utf8转为wordArray数据
let word = CryptoJs.enc.Utf8.parse(wordStr);
//进行加密处理(第一个参数是要加密的word,第二个是密钥,第三个是配置参数)
let encrypted = CryptoJs.AES.encrypt(word, key, {
//配置偏移量,如果mode为ECB模式则不需要这个参数
iv,
//模式选择CBC(模式介绍可以到百度查看,这里不讲述)
mode: CryptoJs.mode.CBC,
//填充使用Pkcs7(注意大小写)
padding: CryptoJs.pad.Pkcs7
});
//使用toString()处理返回
return encrypted.toString();
},
- word:是要加密的内容
- key:是对内容进行加密时使用的密钥(注意保证其安全性,用于加密解密)
- iv:偏移量,是出ECB模式外需要使用到的参数
步骤四:创建解密函数
decrypt(wordStr, keyStr, ivStr) {
//将key的utf8转为wordArray数据
let key = CryptoJs.enc.Utf8.parse(keyStr);
//将iv的utf8转为wordArray数据
let iv = CryptoJs.enc.Utf8.parse(ivStr);
//进行解密处理(第一个参数为解密的word,第二个参数是密匙,第三个参数是配置对象(跟加密相同))
let decrypt = CryptoJs.AES.decrypt(wordStr, key, {
//配置偏移量(跟加密要对应)
iv,
//配置模式为CBC(跟加密要对应)
mode: CryptoJs.mode.CBC,
//配置填充模式(跟加密要对应)
padding: CryptoJs.pad.Pkcs7
});
//将解密的结果解析为Utf8进行返回
return decrypt.toString(CryptoJs.enc.Utf8);
},
- word:是要解密的内容(密文)
- key:是对内容进行加密时使用的密钥(注意保证其安全性,用于加密解密)
- iv:偏移量,是出ECB模式外需要使用到的参数
步骤五:使用
useCrypt(){
//定义密匙(这个是自己定义,这里定义16位)
const key="1234123412ABCDEF";
//定义偏移量(这个是自己定义,这里定义16位)
const iv="0123410ABCDEF352"
//定义一个要加密的内容(自己定义)
const word="qiaoge"
//使用加密函数(注意这里因为是vue框架,使用了this调用)
const cryptWord=this.encrypt(word,key,iv)
console.log(cryptWord) // 2s8MAJj+zUqXU/OdOb9ypw==
//使用解密函数(注意这里因为是vue框架,使用了this调用)
const deCryptWord=this.decrypt(cryptWord,key,iv)
console.log(deCryptWord)// qiaoge
}
完结语 : cryto-js还要很多复杂的配置和使用模式,本文只是介绍简单的使用方法,如果想深入的研究推荐去看下github或者其他资料。---over !