基于 2d5rrr333/toolsfx-moonbit 的国密工程化扩展:RFC 8998 符合的 SM4-GCM 认证加密、SM4 CTR、HMAC-SM3(RFC 2104)、PBKDF2-HMAC-SM3(RFC 8018),核心 SM3/SM4/SM2 原语委托 toolsfx-moonbit / Engineering-grade GM extension for toolsfx-moonbit: RFC 8998-conformant SM4-GCM, CTR, HMAC-SM3 and PBKDF2-HMAC-SM3
moon add wbgxiaosu/smcrypto| 能力 | 来源 | 验证 |
|---|---|---|
| SM3 摘要(一次性/流式) | 委托上游 | 国标向量 + 51 条 gmssl 交叉对拍 |
| SM4 ECB/CBC(PKCS7) | 委托上游 | 国标向量 + 24 组交叉对拍 + 往返测试 |
| SM3-KDF(GB/T 32918.3 5.4.2) | 委托上游 | 国标向量 |
| SM4 CTR | 本项目实现 | 往返测试 + 交叉对拍 |
| SM4-GCM(SP 800-38D) | 本项目实现 | RFC 8998 附录 A.1 密文+标签逐字节对拍 + 篡改检测 |
| HMAC-SM3(RFC 2104) | 本项目新增 | RFC 2104 结构向量 + 篡改检测 |
| PBKDF2-HMAC-SM3(RFC 8018) | 本项目新增 | 独立 Python 基准交叉对拍(迭代 1~80000、跨块、长密钥、截断) |
// GCM 认证加密(16 字节标签,支持任意长度 IV 与 AAD)
let (ct, tag) = @smcrypto.sm4_encrypt_gcm(key, iv, plaintext, aad).unwrap()
// 解密自动校验标签,篡改返回 AuthenticationFailed
let pt = @smcrypto.sm4_decrypt_gcm(key, iv, ct, tag, aad).unwrap()
// HMAC-SM3 / PBKDF2-HMAC-SM3
let mac = @smcrypto.sm3_hmac(key, message)
let dk = @smcrypto.sm3_pbkdf2(b"password", b"salt", 4096, 32)
// SM3 / SM4 ECB、CBC、CTR、KDF 亦可经根包直接使用
let hex = @smcrypto.sm3_hex_digest(b"abc") // 国标示例 1moon check # 零警告
moon test # 30 组测试(含 RFC 8998、国标、gmssl 交叉对拍)
moon run cmd/main # 演示全流程fn sm3_pbkdf2(password : Bytes, salt : Bytes, iterations : Int, dklen : Int) -> Bytesfn sm4_decrypt_gcm(key : Bytes, iv : Bytes, ciphertext : Bytes, tag : Bytes, aad : Bytes) -> Result[Bytes, Sm4Error]fn sm4_encrypt_gcm(key : Bytes, iv : Bytes, plaintext : Bytes, aad : Bytes) -> Result[(Bytes, Bytes), Sm4Error]Install
Download zip基于 2d5rrr333/toolsfx-moonbit 的国密工程化扩展:RFC 8998 符合的 SM4-GCM 认证加密、SM4 CTR、HMAC-SM3(RFC 2104)、PBKDF2-HMAC-SM3(RFC 8018),核心 SM3/SM4/SM2 原语委托 toolsfx-moonbit / Engineering-grade GM extension for toolsfx-moonbit: RFC 8998-conformant SM4-GCM, CTR, HMAC-SM3 and PBKDF2-HMAC-SM3