CryptoJS的AES加解密

AES(高级加密标准)是一种对称加密算法,即加密和解密使用相同的密钥。它可以加密长度为128、192和256位的数据块,并使用128位的密钥进行加密。AES算法使用了固定的块长度和密钥长度,并且被广泛应用于许多安全协议和标准中,例如SSL/TLS、SSH、IPSec等。
在AES加密中,明文被分成128位的块,每个块使用相同的密钥进行加密。加密过程包括以下步骤:

  1. 密钥扩展:将密钥扩展为加密算法所需的轮密钥。
  2. 初始轮:将明文分成块,并与第一轮密钥进行异或。
  3. 多轮加密:将初始轮产生的结果反复进行多轮加密,每轮使用不同的轮密钥进行加密。
  4. 最终轮:在最后一轮加密中,将块进行加密,但是不再进行下一轮加密,而是直接输出密文。

解密过程与加密过程类似,只是将加密过程中的步骤反过来。需要注意的是,解密的过程中使用的是相同的密钥和轮密钥。由于AES是一种块加密算法,因此在加密过程中,需要对数据进行填充,确保数据块大小为128位。

一般都需要前后端配置的加解密方式类型都一致,示例如下,具体情况需要和后端进行协调,此处我是使用Hutool的 SecureUtil.aes("0123456789ABCDEF".getBytes()); 来进行加解密的,使用的AES默认配置,所以前端需要使用如下配置才可以正常和后端同步加解密

// 例如引入一个CryptoJS来使用AES
<script src="https://cdn.staticfile.org/crypto-js/4.0.0/crypto-js.min.js"></script>
<script>
    // 定义密文和密钥
    const ciphertext = 'qZief4Y7nr5O2yK5cQxf9z1C5S7g16AP9fNHrHCeNBM='; // 要解密的密文
    const key = '0123456789ABCDEF'; // 密钥
    // 获取密钥对应的byte数组
    const keyBytes = CryptoJS.enc.Utf8.parse(key);
    // 解密操作
    const decryptedBytes = CryptoJS.AES.decrypt(ciphertext, keyBytes, {
        mode: CryptoJS.mode.ECB,// 设置成与后端一致的加解密模式
        padding: CryptoJS.pad.Pkcs7// 设置成与后端一致的填充方式
    });
    const decryptedText = decryptedBytes.toString(CryptoJS.enc.Utf8);
    // 输出解密结果
    console.log(decryptedText)
</script>
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值