TypeScript 中的密码学:crypto-js 库概述

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程
```html

什么是 crypto-js?

crypto-js 是一个流行的 JavaScript 和 TypeScript 库,提供了标准加密算法的实现。它不需要 Node.js,既可以在浏览器中运行,也可以在服务器上运行。在 TypeScript 项目中,crypto-js 允许轻松加密、解密、哈希数据以及生成 HMAC 签名,而无需使用原生加密 API。

为什么在 TypeScript 中需要加密?

在 Web 应用中,经常需要保护数据:密码、令牌、私人消息。TypeScript 本身不提供加密功能,因此开发者会使用库。crypto-js 覆盖了大多数基本需求:哈希(SHA-256、MD5)、对称加密(AES、DES、Triple DES)和 HMAC。这对于安全存储密码、在发送到服务器之前加密数据或处理 JWT 非常重要。

安装

通过 npm(或 yarn)安装:
npm install crypto-js
npm install @types/crypto-js(用于 TypeScript 类型)

主要功能

  • 哈希: SHA-256、SHA-512、MD5、SHA-1、RIPEMD-160
  • 对称加密: AES、DES、Triple DES、Rabbit、RC4、RC4Drop
  • HMAC: HMAC-SHA256、HMAC-MD5 等
  • 编码/解码: Base64、Hex、UTF-8、Latin1

TypeScript 代码示例

import CryptoJS from 'crypto-js';

// SHA-256 哈希const hash = CryptoJS.SHA256('Hello, world!');console.log(hash.toString()); // hex 字符串

// AES 加密const secretKey = 'my-secret-key';const encrypted = CryptoJS.AES.encrypt('Secret data', secretKey).toString();console.log('已加密:', encrypted);

// 解密const decrypted = CryptoJS.AES.decrypt(encrypted, secretKey);const plaintext = decrypted.toString(CryptoJS.enc.Utf8);console.log('已解密:', plaintext);

// HMAC-SHA256const hmac = CryptoJS.HmacSHA256('message', 'key');console.log('HMAC:', hmac.toString());

// MD5(用于完整性校验)const md5 = CryptoJS.MD5('data');console.log('MD5:', md5.toString());

何时使用 crypto-js?

  • 在客户端加密数据:例如,在发送到服务器之前(但请记住,密钥可能被泄露)。
  • 在服务器上哈希密码:用于存储在数据库中(最好使用专门的库,但 crypto-js 适用于简单情况)。
  • 消息完整性校验:使用 HMAC。
  • 生成令牌:例如,用于一次性链接。
  • 与旧系统交互:当需要 MD5 或 DES 时。

重要提示:不建议将 crypto-js 用于高负载或对安全性要求苛刻的系统——请使用 Web Crypto API 或 node:crypto。但对于典型任务和小型项目,它仍然是一个简单方便的解决方案。

```

推荐