AES 算法(Rijndael 算法)在加解密时需要提供密钥(Key)和初始向量(IV),而用、 CryptoJS.AES 库在加解密时只需要提供密码(Secret Passphrase):

var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase");​
var decrypted = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase");

CryptoJS.AES 库加解密的实质依旧是 AES 加解密,区别在于 CryptoJS.AES 库需要先将密码转换成密钥和初始向量。这个过程可以参考 OpenSSL 的 EVP_BytesToKey 函数

这里简单说明加密字符串的结构,加密字符串是 base64 编码,其所对应的字节数组由三部分组成:

  1. Salted__ 这八个字符对应的 ASCII 编码,占 8 个字节
  2. 加密时用到的随机种子,占 8 个字节
  3. 用 AES 算法(Rijndael 算法,CBC 模式,256 位密钥,128 位块)加密得到的字节数组

其他语言同功能实现传送门

最后修改:2022 年 09 月 04 日
如果觉得我的文章对你有用,请随意赞赏