AESEncrypt
AES加密
参考网页
加密
/**
*
*加密方法
* @param {*} word
* @return {*}
*/
export function Encrypt(word) {
const key = CryptoJS.enc.Utf8.parse("292695cbd3a94f00"); // key与后端约定好固定
const srcs = CryptoJS.enc.Utf8.parse(word);
const encrypted = CryptoJS.AES.encrypt(srcs, key, {
// iv: [], // 不需要密钥偏移量
mode: CryptoJS.mode.ECB, // 使用ECB算法
padding: CryptoJS.pad.Pkcs7, // 数据采用 PKCS7填充
});
// 需要返回base64格式的加密结果,使用此句
return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
}
解密
/**
*
*解方法
* @param {*} word
* @return {*}
*/
export function Decrypt(word) {
const key = CryptoJS.enc.Utf8.parse("292695cbd3a94f00"); // key与后端约定好固定
let base64 = CryptoJS.enc.Base64.parse(word);
let src = CryptoJS.enc.Base64.stringify(base64);
const decrypted = CryptoJS.AES.decrypt(src, key, {
// iv: [], // 不需要密钥偏移量
mode: CryptoJS.mode.ECB, // 使用ECB算法
padding: CryptoJS.pad.Pkcs7, // 数据采用 PKCS7填充
});
const decryptStr = decrypted.toString(CryptoJS.enc.Utf8);
return decryptStr;
}
使用
console.log("AES START---\n");
let password = "123456frk";
let encryptWord = Encrypt(password);
let decryptWord = Decrypt(encryptWord);
console.log("encryptWord: ", encryptWord);
console.log("decryptWord: ", decryptWord);
AES START---
index.jsx:161 encryptWord: IA7IWbFzDVhrzUNGqNJocA==
index.jsx:162 decryptWord: 123456frk
返回如↑
console.log("AES START---\n");
let password = "0123456789123456";
let afterPassword = "114514";
let encryptWord = Encrypt(password);
console.log("encryptWord: ", encryptWord);
let afterEncryWord = EncryptFromAppSecret(afterPassword, password);
console.log("afterEncryWord: ", afterEncryWord);
let decryptWord = Decrypt(encryptWord);
let afterDecryWord = DecryptFromAppSecret(afterEncryWord, decryptWord);
console.log("decryptWord: ", decryptWord, password === decryptWord);
console.log("afterDecryWord: ", afterDecryWord);
注意要点
进Encrypt
的是字符串,进去就转换成Base64
进Decrypt
的是已经被Base64加密过的,出来的时候要Base64解密
AESkey长度必须为16,24,32!!!
人生到处知何似,应似飞鸿踏雪泥。