npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@sparta-utils/crypto-util

v1.0.14

Published

一个支持多种加密算法的加密工具库,涵盖 AES、RSA、SM2、SM3、SM4、SHA、HMAC、MD5、Base64、JWT 等,适用于日常加解密、签名验签、摘要、Token 管理等场景。

Readme

@sparta-utils/crypto-util

🚀 一个统一的加密解密工具库,支持常见加密算法(AES、RSA、SHA、MD5、HMAC、Base64、JWT)以及国密算法(SM2、SM3、SM4)。

  • ✅ AES
  • ✅ RSA
  • ✅ SM2 / SM3 / SM4 (国密)
  • ✅ SHA256 / SHA512
  • ✅ HMAC
  • ✅ MD5
  • ✅ Base64 encode/decode
  • ✅ JWT (sign/verify/decode)

📦 安装

npm install @sparta-utils/crypto-util

或者使用 yarn:

yarn add @sparta-utils/crypto-util

🔰 快速使用

import { CryptoUtil } from '@sparta-utils/crypto-util';

// ✅ AES 加密解密
import { CryptoUtil } from '@sparta-utils/crypto-util'

const key = '1234567890abcdef'
const iv = 'abcdef1234567890' // 可选,如果使用 ECB 模式可以不传

const encrypted = CryptoUtil.aes.encrypt('Hello AES', {
  key,
  iv,
  mode: 'cbc'
})
console.log('加密后:', encrypted)

const decrypted = CryptoUtil.aes.decrypt(encrypted, {
  key,
  iv,
  mode: 'cbc'
})

console.log('解密后:', decrypted)

// ✅ RSA 密钥生成、加密解密、签名验签
const { publicKey: rsaPub, privateKey: rsaPriv } = CryptoUtil.rsa.generateKeyPair();
const rsaEncrypted = CryptoUtil.rsa.encrypt('Hello RSA', rsaPub);
const rsaDecrypted = CryptoUtil.rsa.decrypt(rsaEncrypted, rsaPriv);
const rsaSignature = CryptoUtil.rsa.sign('RSA Message', rsaPriv);
const rsaVerified = CryptoUtil.rsa.verify('RSA Message', rsaSignature, rsaPub);
console.log('RSA验签:', rsaVerified);

// ✅ SM2 密钥生成、加密解密、签名验签
const { publicKey: rsaPub, privateKey: rsaPriv } = CryptoUtil.rsa.generateKeyPair()
console.log('RSA公钥:', rsaPub)
console.log('RSA私钥:', rsaPriv)
const rsaEncrypted = CryptoUtil.rsa.encrypt('Hello RSA', rsaPub)
console.log('RSA加密:', rsaEncrypted)
const rsaDecrypted = CryptoUtil.rsa.decrypt(rsaEncrypted, rsaPriv)
console.log('RSA解密:', rsaDecrypted)
const rsaSignature = CryptoUtil.rsa.sign('RSA Message', rsaPriv)
console.log('RSA签名:', rsaSignature)
const rsaVerified = CryptoUtil.rsa.verify('RSA Message', rsaSignature, rsaPub)
console.log('RSA验签结果:', rsaVerified)

// ✅ SM3 摘要
const sm3Hash = CryptoUtil.sm3('Hello SM3')
console.log('SM3摘要:', sm3Hash)

// ✅ SM4 加密解密
const sm4Key = '0123456789abcdef'; // 16字节密钥
const sm4Encrypted = CryptoUtil.sm4.encrypt('Hello SM4', sm4Key);
const sm4Decrypted = CryptoUtil.sm4.decrypt(sm4Encrypted, sm4Key);
console.log('SM4解密:', sm4Decrypted);

// ✅ SHA256 / SHA512
const sha256Hash = CryptoUtil.sha.sha256('Hello SHA256');
const sha512Hash = CryptoUtil.sha.sha512('Hello SHA512');
console.log('SHA256:', sha256Hash);
console.log('SHA512:', sha512Hash);

// ✅ HMAC-SHA
const hmac256 = CryptoUtil.hmac.hmac('sha256', 'hmacKey', 'HMAC Message')
const hmac512 = CryptoUtil.hmac.hmac('sha512', 'hmacKey', 'HMAC Message')

console.log('HMAC-SHA256:', hmac256)
console.log('HMAC-SHA512:', hmac512)

// ✅ MD5
const md5Hash = CryptoUtil.md5('Hello MD5');
console.log('MD5:', md5Hash);

// ✅ Base64
const base64Encoded = CryptoUtil.base64.encode('Hello Base64')
console.log('Base64编码:', base64Encoded)
const base64Decoded = CryptoUtil.base64.decode(base64Encoded)
console.log('Base64解码:', base64Decoded)

// ✅ JWT 签发与验证 浏览器不可使用 / 当前方法尚不完善
const jwtToken = CryptoUtil.jwt.sign({ uid: 1001 }, 'jwtSecretKey');
const jwtPayload = CryptoUtil.jwt.verify(jwtToken, 'jwtSecretKey');
console.log('JWT验证:', jwtPayload);

📚 支持功能

| 模块 | 功能 | 方法示例 | | ------ | ----------------- | --------------------------------------------------------- | | AES | 对称加密 | encrypt, decrypt | | RSA | 非对称加密/签名 | generateKeyPair, encrypt, decrypt, sign, verify | | SM2 | 国密加密/签名 | generateKeyPair, encrypt, decrypt, sign, verify | | SM3 | 国密摘要算法 | sm3(message) | | SM4 | 国密对称加密 | encrypt, decrypt | | SHA | 摘要(sha256、sha512) | sha256, sha512 | | HMAC | 带密钥摘要(HMAC-SHA) | hmacSHA256, hmacSHA512 | | MD5 | MD5 哈希 | md5(message) | | Base64 | 编码与解码 | encode, decode | | JWT | Token 生成与校验 | sign, verify, decode |

🧪 加密方法详解

🔐 AES (对称加密)

| 方法 | 说明 | 参数说明 | | ------- | ----- | --------------------------------------------- | | encrypt | 加密字符串 | (text: string, key: string) => string | | decrypt | 解密字符串 | (cipherText: string, key: string) => string |

🔑 RSA (非对称加密)

| 方法 | 说明 | 参数说明 | | --------------- | ------ | ----------------------------------------------------------------- | | generateKeyPair | 生成密钥对 | () => { publicKey: string, privateKey: string } | | encrypt | 公钥加密 | (text: string, publicKey: string) => string | | decrypt | 私钥解密 | (cipherText: string, privateKey: string) => string | | sign | 私钥签名 | (text: string, privateKey: string) => string | | verify | 公钥验证签名 | (text: string, signature: string, publicKey: string) => boolean |

🧧 SM2 (国密非对称加密)

| 方法 | 说明 | 参数说明 | | --------------- | ----- | ----------------------------------------------------------------- | | generateKeyPair | 生成密钥对 | () => { publicKey: string, privateKey: string } | | encrypt | 公钥加密 | (text: string, publicKey: string) => string | | decrypt | 私钥解密 | (cipherText: string, privateKey: string) => string | | sign | 签名 | (text: string, privateKey: string) => string | | verify | 验签 | (text: string, signature: string, publicKey: string) => boolean |

🧮 SM3 (国密摘要)

| 方法 | 说明 | 参数说明 | | --- | ---- | -------------------------- | | sm3 | 生成摘要 | (text: string) => string |

🔒 SM4 (对称加密)

| 方法 | 说明 | 参数说明 | | ------- | -- | --------------------------------------------- | | encrypt | 加密 | (text: string, key: string) => string | | decrypt | 解密 | (cipherText: string, key: string) => string |

📌 SHA 摘要算法

| 方法 | 说明 | 参数说明 | | ------ | --------- | -------------------------- | | sha256 | SHA256 哈希 | (text: string) => string | | sha512 | SHA512 哈希 | (text: string) => string |

🔐 HMAC 加密(带密钥的哈希)

| 方法 | 说明 | 参数说明 | | ---------- | ----------- | --------------------------------------- | | hmacSHA256 | SHA256 HMAC | (text: string, key: string) => string | | hmacSHA512 | SHA512 HMAC | (text: string, key: string) => string |

🧬 MD5

| 方法 | 说明 | 参数说明 | | --- | ------ | -------------------------- | | md5 | MD5 哈希 | (text: string) => string |

🔤 Base64

| 方法 | 说明 | 参数说明 | | ------ | --------- | ---------------------------- | | encode | Base64 编码 | (text: string) => string | | decode | Base64 解码 | (base64: string) => string |

🔑 JWT (JSON Web Token)

| 方法 | 说明 | 参数说明 | | ------ | ------------ | -------------------------------------------------------------------- | | sign | 生成 token | (payload: object, secret: string, options?: SignOptions) => string | | verify | 验证 token 有效性 | (token: string, secret: string) => object \| string | | decode | 解码 token | (token: string) => null \| { [key: string]: any } |

📄 License MIT License © 2025-present