创建新的 SM2 实例
可选keyPair: Partial<KeyPair>
可选的密钥对(公钥和/或私钥)
可选curveParams: SM2CurveParams
可选的标准曲线兼容声明;不支持自定义曲线
解密数据
加密的数据(十六进制字符串或 Uint8Array)
可选options: SM2DecryptOptions
解密选项(密文模式、输入格式等)
解密后的数据(字符串)
解密任意二进制明文,不经过 UTF-8 解码。
Hex/Base64 密文字符串或原始密文字节
可选options: SM2DecryptOptions
密文排列与字符串输入编码;省略时按函数入口的默认规则处理
通过 C3 完整性校验的原始明文字节
加密数据
要加密的数据(字符串或 Uint8Array)
可选options: SM2EncryptOptions
加密选项(密文模式、输出格式等)
加密后的数据(默认十六进制字符串)
执行 SM2 密钥交换协议
对方公钥(十六进制字符串)
对方临时公钥(十六进制字符串)
是否为发起方
可选options: {可选参数
密钥交换结果
const sm2A = SM2.generateKeyPair();
const sm2B = SM2.generateKeyPair();
const tempA = SM2.generateKeyPair();
const tempB = SM2.generateKeyPair();
const resultA = sm2A.keyExchange(sm2B.getPublicKey(), tempB.getPublicKey(), true, {
tempPrivateKey: tempA.getPrivateKey()
});
const resultB = sm2B.keyExchange(sm2A.getPublicKey(), tempA.getPublicKey(), false, {
tempPrivateKey: tempB.getPrivateKey()
});
if (resultA.sharedKey !== resultB.sharedKey) {
throw new Error('SM2 密钥交换结果不一致');
}
签名数据
要签名的数据(字符串或 Uint8Array)
可选options: Omit<SignOptions, "curveParams">
签名选项(签名格式、用户 ID 等)
签名(默认十六进制字符串,r || s 格式)
验证签名
原始数据(字符串或 Uint8Array)
签名(十六进制字符串)
可选options: Omit<VerifyOptions, "curveParams">
验签选项(签名格式、用户 ID 等)
签名数学上有效且身份、消息均匹配时返回 true,否则返回 false
静态from从私钥创建 SM2 实例
私钥(十六进制字符串)
可选curveParams: SM2CurveParams
可选的标准曲线兼容声明;不支持自定义曲线
新的 SM2 实例
静态from从公钥创建 SM2 实例
公钥(十六进制字符串)
可选curveParams: SM2CurveParams
可选的标准曲线兼容声明;不支持自定义曲线
新的 SM2 实例
静态generate
SM2 类,提供面向对象的 API
SM2 是中国国家密码管理局发布的椭圆曲线密码算法, 支持公钥加密、数字签名和密钥交换功能。
示例