CryptoJS 是一个广泛使用的 JavaScript 加密库,提供了一组加密标准的实现,如 AES、DES、HMAC、SHA-1、SHA-256 等。该库轻量级、易于使用,并且适用于浏览器和 Node.js 环境。
特点
- 多种加密算法:支持 AES、DES、Rabbit、RC4 和 MD5、SHA-1、SHA-256 等哈希算法。
- 跨平台:适用于浏览器和 Node.js 环境。
- 模块化设计:允许只引入需要的模块,减小代码体积。
- 简单易用:API 设计简洁,易于集成到项目中。
使用场景
- 数据加密:对敏感数据进行加密,保护数据安全。
- 消息摘要:生成数据的哈希值,用于数据完整性校验。
- 身份验证:通过 HMAC 进行消息认证。
- 文件加密:对文件内容进行加密,防止未经授权的访问。
安装方式
npm 安装
npm install crypto-js
CDN 引入
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script>
使用示例
AES 加密和解密
const CryptoJS = require("crypto-js");
const data = "Hello, World!";
const key = "my-secret-key";
const encrypted = CryptoJS.AES.encrypt(data, key).toString();
console.log("Encrypted:", encrypted);
const decrypted = CryptoJS.AES.decrypt(encrypted, key).toString(CryptoJS.enc.Utf8);
console.log("Decrypted:", decrypted);
SHA-256 哈希
const CryptoJS = require("crypto-js");
const message = "Hello, World!";
const hash = CryptoJS.SHA256(message).toString();
console.log("Hash:", hash);
常用 API 介绍
- AES 加密和解密
CryptoJS.AES.encrypt(message, key)
: 使用 AES 算法加密消息。
CryptoJS.AES.decrypt(ciphertext, key)
: 使用 AES 算法解密密文。
- 哈希算法
CryptoJS.SHA256(message)
: 生成 SHA-256 哈希。
CryptoJS.MD5(message)
: 生成 MD5 哈希。
- 编码
CryptoJS.enc.Utf8.parse(string)
: 将字符串编码为 UTF-8 格式。
CryptoJS.enc.Hex.stringify(wordArray)
: 将 WordArray 编码为十六进制字符串。
- HMAC
CryptoJS.HmacSHA256(message, key)
: 使用 SHA-256 生成 HMAC。
高级用法
自定义密钥派生
const password = "password";
const salt = CryptoJS.lib.WordArray.random(128 / 8);
const key128Bits1000Iterations = CryptoJS.PBKDF2(password, salt, {
keySize: 128 / 32,
iterations: 1000
});
console.log("Derived Key:", key128Bits1000Iterations.toString());
官方资料