CryptoJS

2024-06-26 13:56:00 110
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());

官方资料