CryptoJS AES 加解密 加盐
时间: 2024-08-13 08:02:26 浏览: 121
CryptoJS是一个JavaScript库,用于加密和解密数据,其中AES(Advanced Encryption Standard,高级加密标准)是一种常用的对称加密算法。加盐(Salting)通常用于密码哈希,增强安全性,防止彩虹表攻击。在AES加解密过程中加入盐可以做如下的操作:
1. **加盐**:当你需要对密码进行加密存储时,会先将用户提供的原始密码与随机生成的“盐”值结合。这个过程不会改变原始数据的长度,盐通常是一段固定长度的随机字符串。
```javascript
var salt = CryptoJS.lib.WordArray.random(16); // 例如生成16字节的随机盐
var password = "mySecurePassword";
var saltedPassword = CryptoJS.lib.WordArray.create([...password, ...salt].map(char => char.charCodeAt(0)));
```
2. **哈希处理**:然后将这个盐+密码组合通过一个安全的散列函数(如PBKDF2、bcrypt等)进一步处理,得到一个密钥。
3. **AES加密**:最后,使用这个经过哈希的密钥(称为“密钥碘”Key Iodine)和AES算法对实际的数据进行加密。
4. **解密**:当需要从存储中还原数据时,同样使用相同的盐值和之前计算出的密钥对数据进行解密。
```javascript
var encryptedData = CryptoJS.AES.encrypt(saltedData, keyFromHash);
```
阅读全文