一、前置知识:NJS Crypto 模块基础
1.1 模块引入
NJS 从 0.7.0 版本开始,将 crypto 作为全局对象提供(无需额外安装依赖),也可通过 import 显式引入,两种方式均可:
// 方式 1:全局对象直接使用(推荐,NJS 0.7.0+)
const hash = crypto.createHash('sha1');
// 方式 2:显式导入(兼容写法)
import crypto from 'crypto';
const hmac = crypto.createHmac('sha1', 'my-secret-key');
1.2 核心概念区分
| 类型 | 核心特点 | 适用场景 |
|---|---|---|
| Hash(哈希) | 单向加密,无密钥,相同输入必出相同输出 | 数据完整性校验(如文件指纹)、简单数据脱敏 |
| HMAC(哈希消息认证码) | 基于 Hash 算法 + 密钥,需密钥验证,更安全 | 接口签名、数据防篡改(如 API 请求验签) |
二、Hash 算法:无密钥的单向加密
2.1 核心 API 说明
crypto.createHash(algorithm) 是创建 Hash 对象的入口,核心参数和方法如下:
- algorithm:哈希算法,支持
md5、sha1、sha256(NJS 内置,无需额外配置); hash.update(data):追加待加密的字符串/数据(可多次调用,数据会拼接);hash.digest([encoding]):计算最终哈希值,支持hex、base64、base64url编码,无编码参数时返回 Buffer 对象。
2.2 基础使用示例
示例 1:单次输入计算 SHA1 哈希(Base64URL 编码)
import crypto from 'crypto';
// 1. 创建 SHA1 Hash 对象
const hash = crypto.createHash('sha1');
// 2. 传入待加密数据
hash.update();
result = hash.();
.(result);

