首页 > 其他分享 >AESEncrypt

AESEncrypt

时间:2022-11-24 21:26:31浏览次数:51  
标签:console log encryptWord decryptWord AESEncrypt let CryptoJS

AES加密

参考网页

前端AES加密 - 知乎 (zhihu.com)

加密

/**
 *
 *加密方法
 * @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!!!

标签:console,log,encryptWord,decryptWord,AESEncrypt,let,CryptoJS
From: https://www.cnblogs.com/lepanyou/p/16923365.html

相关文章