导读:上一篇记录了【crypto-js】公共类以及DES加解密方法;接上篇记录AES加解密的方法。
安装
npm i crypto-js
引入
import CryptoJS from 'crypto-js'
AES
AES加密是用的最多的,推荐。
用来替代之前的DES算法,长度有128位,192位,256位,其中128位使用最广泛。
加密算法
AES/CBC/PK7加密方式
// 这里key ,iv 设置为一样的,实际情况跟后端确认
let key = CryptoJS.enc.Utf8.parse(keyStr)
let iv = CryptoJS.enc.Utf8.parse(keyStr)
aes_encrypt(message) {
//加密(aes)
let srcs = CryptoJS.enc.Utf8.parse(JSON.stringify(message))
let encrypted = CryptoJS.AES.encrypt(srcs, key, { iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 })
return encrypted.toString() // 返回base64字符串
},
解密算法
aes_decrypt(message) {
//解密(aes),接收到的message是base64字符串。
let decrypt = CryptoJS.AES.decrypt(message, key, { iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 })
return CryptoJS.enc.Utf8.stringify(decrypt).toString()
},
MD5算法
MD5 常见的哈希算法,用于生成128位的哈希值。注意:MD5 方法调用之后,还需要调用 toString 方法。
// 16 进制形式进行编码
CryptoJS.MD5(keyStr).toString(CryptoJS.enc.Hex)
// Converts a hex string to a word array.
CryptoJS.enc.Utf8.parse(CryptoJS.MD5(keyStr).toString(CryptoJS.enc.Hex))
总结
- encrypted.toString() 会被转换成Base64格式的字符串
- encrypted.ciphertext.toString() 返回结果不是base64格式的,而是128位的
对称加密算法:DES或者AES算法,加密key和解密key用同一个。当model是ECB时,不需要设置偏移量iv,使用模式des/cbc/pkcs7或者其他模式 具体跟后端确认保持一致。