更新记录
1.0.0(2026-09-07) 下载此版本
首个版本。
- 摘要算法:MD5、SHA-1、SHA-256、HMAC-SHA256(UTF-8 输入,Hex 输出,另提供 SHA-256 → Base64Url)
- 对称加密:AES-128 / 192 / 256,ECB / CBC 分组模式,PKCS7 填充,Base64 / Hex 输出,与后端常见 AES 实现互通
- 编码转换:UTF-8 / Base64 / Base64Url / Hex,不依赖 btoa/atob/TextEncoder/Buffer,iOS JSCore 与小程序环境可用
- 随机工具:随机字节(优先平台 crypto.getRandomValues)、随机字符串、PKCE verifier、UUID v4
- PKCE(RFC 7636,S256):createPkce 一步生成 code_verifier / code_challenge
- 全部算法为纯 JS 本地计算,无原生依赖、无需自定义调试基座,H5 / App / 小程序全端可用
- 附带 node:test 对拍 node:crypto 的正确性测试(tests/crypto.test.cjs)与 TS 类型声明(js_sdk/index.d.ts)
平台兼容性
uni-app(4.25)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | 5.0 | 12 | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | × | √ | √ | √ | × | × |
fz-utils
1.0.0
纯 JS 算法工具:MD5 / SHA / HMAC、AES、Base64 / Hex、随机串、PKCE。全端可用,不需要自定义基座,不发起网络请求。
接入
复制到 uni_modules,按需导入:
import {
md5, sha256, hmacSha256,
aesEncrypt, aesDecrypt,
base64Encode, base64Decode,
randomString, uuid,
createPkce
} from '@/uni_modules/fz-utils/js_sdk/index.js'
也可以只引单个模块,例如 @/uni_modules/fz-utils/js_sdk/md5.js。演示页:pages/utils/utils。
Options API 页面不要在 <template> 里直接调导入函数,在 methods 里包一层。
摘要
md5('hello')
sha1('hello')
sha256('hello')
hmacSha256('message', 'secret')
sha256Base64Url('some verifier')
入参为字符串(UTF-8)或 Uint8Array。md5 / sha1 / sha256 / hmacSha256 返回小写 Hex。
AES
const key = '1234567890abcdef' // 16 / 24 / 32 字节 → AES-128 / 192 / 256
const iv = 'fedcba0987654321' // CBC 必填 16 字节
const cipher = aesEncrypt('机密数据', key, iv)
const plain = aesDecrypt(cipher, key, iv)
aesEncrypt('data', key, null, { mode: 'ECB' })
aesEncrypt('data', key, iv, { output: 'hex' })
aesDecrypt(hexCipher, key, iv, { input: 'hex' })
默认 CBC + PKCS7 + Base64。options.padding 可设 'NONE'。与 Java AES/CBC/PKCS7Padding、Node aes-128-cbc 互通,key/iv 取值方式要和后端对齐。
编码
base64Encode('你好')
base64Decode('5L2g5aW9')
utf8Encode('abc')
bytesToHex(utf8Encode('hi'))
还有 bytesToBase64 / base64ToBytes、bytesToBase64Url / base64UrlToBytes、hexToBytes。
随机 / PKCE
randomString(6, '0123456789')
uuid()
const { codeVerifier, codeChallenge } = createPkce() // 默认 64 位,范围 43~128
codeChallenge === sha256Base64Url(codeVerifier)。无 crypto.getRandomValues 的环境退化为 Math.random。
错误
参数不对会 throw Error,信息以 fz-utils: 开头。

收藏人数:
下载插件并导入HBuilderX
下载插件ZIP
赞赏(0)
下载 13
赞赏 0
下载 12707000
赞赏 1957
赞赏
京公网安备:11010802035340号