JavaScript实现AES加密/解密

使用CryptoJS库来实现AES的加密和解密

前置条件, 请确保下载了CryptoJS库并放置在aes.js文件所在目录

创建一个aes.js文件, 内容如下

// 引入CryptoJS库
const CryptoJS = require("./crypto-js");

// 定义加密密钥,这里使用Base64编码的字符串
let key = "YWJjZGVmZzEyMzQ1Njc4OQ==";
// 将Base64编码的密钥解析为CryptoJS可识别的格式
let keyBase64 = CryptoJS.enc.Base64.parse(key);
// 初始化向量(IV),这里使用空字符串的Utf8编码,通常IV应该是随机生成的,但这里为了示例使用空字符串
let iv = CryptoJS.enc.Utf8.parse("");

/**
 * 明文AES加密函数
 * @param {String} plainText 需要加密的明文
 * @returns {String} 加密后的密文字符串
 */
function aesEncrypt(plainText) {
  // 如果传入的明文未定义,则直接返回
  if (plainText == undefined) {
    return plainText;
  }
  // 使用AES算法、CBC模式和PKCS#7填充对明文进行加密
  const encryptedData = CryptoJS.AES.encrypt(plainText, keyBase64, {
    iv: iv, // 使用上面定义的IV
    mode: CryptoJS.mode.CBC, // 加密模式设置为CBC
    padding: CryptoJS.pad.Pkcs7, // 填充方式设置为PKCS#7
  });
  // 将加密后的对象转换为字符串形式返回
  return encryptedData.toString();
}

/**
 * 密文解密函数
 * @param {String} cipherText 需要解密的密文字符串
 * @returns {String} 解密后的明文字符串
 */
function aesDecrypt(cipherText) {
  // 如果传入的密文未定义,则直接返回
  if (cipherText == undefined) {
    return cipherText;
  }
  // 使用AES算法、CBC模式和PKCS#7填充对密文进行解密,并指定返回格式为Utf8字符串
  const decryptedData = CryptoJS.AES.decrypt(cipherText, keyBase64, {
    iv: iv, // 使用上面定义的IV
    mode: CryptoJS.mode.CBC, // 加密模式设置为CBC
    padding: CryptoJS.pad.Pkcs7, // 填充方式设置为PKCS#7
  }).toString(CryptoJS.enc.Utf8);
  // 返回解密后的明文
  return decryptedData;
}

const plainText = "测试加密";
const cipherText = aesEncrypt(plainText);
console.log("密文 :>> ", cipherText);
const decryptText = aesDecrypt(cipherText);
console.log("明文 :>> ", decryptText);

可使用node运行

node aes.js 

运行结果如下

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值