TypeScript 快速入门
TypeScript 快速入门
这一步只确认 gmkitx 0.10.1 能在当前环境正确加载,并具备后续密码操作需要的 UTF-8 与安全随机源。签名、加密和协议字段放在使用手册中逐项完成。
1. 安装固定版本
npm install gmkitx@0.10.1发布包支持 Node.js 18+、ESM、CommonJS 和浏览器 IIFE;TypeScript 声明随包提供。新代码从包根入口使用具名导出,不导入 dist/* 或 src/*。
// ESM / TypeScript
import { sm3Digest } from 'gmkitx';
// CommonJS
const { sm3Digest: sm3DigestCjs } = require('gmkitx');浏览器脚本地址、全局对象名称、CSP 和受限宿主配置见 TypeScript 环境与安装。
2. 运行最小验证
把下面的源码保存为 gmkit-check.mjs,或直接运行仓库中的同一文件。
// 1. 检查运行环境:BigInt 与 UTF-8 codec 是 gmkitx 的基础运行条件。
const environment = getEnvReport();
assert.equal(environment.hasBigInt, true);
assert.equal(environment.hasTextEncoder, true);
assert.equal(environment.hasTextDecoder, true);
// 2. 配置随机源:正式环境没有 CSPRNG 时立即报错,不允许退回非安全随机数。
configureRNG('strict');
const nonce = getRandomBytes(12);
assert.equal(nonce.length, 12);
// 3. 计算固定向量:SM3("abc") 必须得到标准的 32 字节摘要。
const digest = sm3Digest('abc');
assert.equal(
digest,
'66c7f0f462eeedd9d1f2d46bdc10e4e2'
+ '4167c4875cf2f7a2297da02b8f4ba8e0',
);
// 4. 非法参数断言:随机字节长度必须是正安全整数。
assert.throws(() => getRandomBytes(0));node gmkit-check.mjs3. 接着完成业务任务
先固定数据UTF-8、字节与编码明确字符串和 Uint8Array 的边界,固定 Hex/Base64 输入格式。身份与小数据SM2 签名和加解密使用非空 userId、DER 签名、C1C3C2 密文和 Base64 外层编码。业务数据SM4-GCM 认证加密保存 nonce、AAD、ciphertext、tag,并验证篡改一定失败。摘要与认证SM3、SHA 与 HMAC区分普通摘要和带共享密钥的消息认证。
需要精确参数和默认值时查 TypeScript API 说明书;维护旧数据时才进入旧系统迁移。
上线边界
当前发布包尚未完成独立第三方安全审计。固定向量和示例测试不能替代密钥管理、协议评审、密码产品认证或目标环境安全评估。