CryptoJS是标准安全加密算法的JavaScript实现,运行速度快,接口简单,见名知意。文档说明可参考:CryptoJS文档说明。
CryptoJS的实现主要有哈希算法,HMAC、加密算法、以及常用编解码算法。
哈希算法,如MD5、SHA-1、SHA-2等。
加密算法,如AES、DES等。
编解码算法,如Base64、Hex16等。
一、安装crypto-js
npm install crypto-js
二、封装加解密方法
import CryptoJS from 'crypto-js'
/**
* AES加密
* @param plainText 明文
* @param keyInBase64Str base64编码后的key
* @param ivInBase64Str base64编码后的初始化向量(只有CBC模式下才支持)
* @return base64编码后的密文
*/
export function encryptByAES(plainText, keyInBase64Str, ivInBase64Str) {
let key = CryptoJS.enc.Base64.parse(keyInBase64Str)
let iv = CryptoJS.enc.Base64.parse(ivInBase64Str)
let encrypted = CryptoJS.AES.encrypt(plainText, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
})
// 这里的encrypted不是字符串,而是一个CipherParams对象
return encrypted.ciphertext.toString(CryptoJS.enc.Base64)
}
/**
* AES解密
* @param cipherText 密文
* @param keyInBase64Str base64编码后的key
* @param ivInBase64Str base64编码后的初始化向量(只有CBC模式下才支持)
* @return 明文
*/
export function decryptByAES(cipherText, keyInBase64Str, ivInBase64Str) {
let key = CryptoJS.enc.Base64.parse(keyInBase64Str)
let iv = CryptoJS.enc.Base64.parse(ivInBase64Str)
// 返回的是一个Word Array Object,其实就是Java里的字节数组
let decrypted = CryptoJS.AES.decrypt(cipherText, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
})
return decrypted.toString(CryptoJS.enc.Utf8)
}
三、vue中使用
let secret = 'sQPoC/1do9BZMkg8I5c09A=='
let cipherText = encryptByAES('Hello', secret, secret)
let plainText = decryptByAES(cipherText, secret, secret)
console.log(`Hello加密后的密文为:${cipherText}`)
console.log(`解密后的内容为:${plainText}`)
————————————————
版权声明:本文为CSDN博主「凌波漫步&」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lingbomanbu_lyl/article/details/125238945