sign-encrypt
v1.0.2
Published
A utility for generating encrypted signatures with multiple algorithms support
Maintainers
Readme
sign-encrypt
一个用于生成加密签名的工具库,支持多种加密算法和缓存机制。
特性
- 默认使用 MD5 加密算法,支持 SHA256 和 SHA512
- 内置缓存机制,提高性能
- 完整的 TypeScript 类型支持
- 支持签名验证
- 支持对象过滤和嵌套对象处理
- 支持调试模式,方便排查问题
- 支持 ESM 和 CommonJS 模块系统
安装
npm install sign-encrypt使用方法
ESM 导入
import { signEncrypt, verifySignature } from 'sign-encrypt';CommonJS 导入
const { signEncrypt, verifySignature } = require('sign-encrypt');基本使用
import { signEncrypt, verifySignature } from 'sign-encrypt';
const data = { name: 'test', age: 25 };
const signKey = 'your-secret-key';
// 生成签名(默认使用 MD5)
const signature = signEncrypt(data, signKey);
// 验证签名
const isValid = verifySignature(data, signature, signKey);高级选项
import { signEncrypt } from 'sign-encrypt';
const data = { name: 'test', age: 25 };
const signKey = 'your-secret-key';
// 使用 SHA256 算法
const signature = signEncrypt(data, signKey, {
algorithm: 'SHA256',
enabled: true, // 启用缓存
ttl: 3600000, // 缓存1小时
debug: true, // 启用调试模式,打印签名参数信息
});调试模式
启用调试模式后,会以表格形式打印以下信息:
- 排序后的键
- 过滤后的数据
- 签名字符串
- 签名密钥
- 加密算法
- 最终加密字符串
const signature = signEncrypt(data, signKey, {
debug: true
});
// 输出示例:
// ┌───────────────┬─────────────────────────────┐
// │ (index) │ Values │
// ├───────────────┼─────────────────────────────┤
// │ 排序后的键 │ ['age', 'name'] │
// │ 过滤后的数据 │ { age: 25, name: 'test' } │
// │ 签名字符串 │ '25||test' │
// │ 签名密钥 │ 'your-secret-key' │
// │ 加密算法 │ 'MD5' │
// │最终加密字符串 │ '25||test||your-secret-key' │
// └───────────────┴─────────────────────────────┘对象过滤
import { filterObjectByValue } from 'sign-encrypt';
const data = {
name: 'test',
age: 25,
empty: '',
null: null,
nested: {
value: 'test',
empty: ''
}
};
// 过滤空值
const filtered = filterObjectByValue(data, {
keepEmptyString: false,
recursive: true
});API 文档
signEncrypt(data: object, signKey: string, options?: SignEncryptOptions): string
生成加密签名。
参数:
data: 要签名的数据对象signKey: 签名密钥options: 可选配置algorithm: 加密算法 ('MD5' | 'SHA256' | 'SHA512'),默认为 'MD5'enabled: 是否启用缓存ttl: 缓存时间(毫秒)debug: 是否启用调试模式,默认为 false
verifySignature(data: object, signature: string, signKey: string, options?: SignEncryptOptions): boolean
验证签名是否有效。
filterObjectByValue(obj: object, options?: SignEncryptOptions): object
过滤对象中的空值。
开发
# 安装依赖
npm install
# 运行测试
npm test
# 构建(同时生成 ESM 和 CommonJS 格式)
npm run build
# 生成文档
npm run docs贡献
欢迎提交 Issue 和 Pull Request!
许可证
MIT
