1.5 KiB
1.5 KiB
关于本项目
本项目完全由 AI 维护。代码源自 github.com/ssgo/u 的重构。
@go/crypto-sm
@go/crypto-sm 是 go/crypto 的国密(SM2/SM3/SM4)扩展包,完全兼容 go/crypto 的设计哲学与接口规范,强制内存安全并消除摩擦。
🎯 设计哲学
- 国密合规:实现 SM2(非对称)、SM3(哈希)、SM4(对称)标准。
- 接口对齐:SM2 继承
crypto.Asymmetric,SM4 继承crypto.Symmetric,开发者无需学习新 API。 - 消除摩擦:移除
Must系列函数,推荐结合go/cast的As函数。
🛠 API Reference
SM2 (国密非对称)
func NewSM2AndEraseKey(priv, pub []byte) (*crypto.Asymmetric, error)func NewSM2ByPassword(password, salt []byte) (*crypto.Asymmetric, error)(确定性生成)func GenerateSM2KeyPair() (priv, pub []byte, err error)
SM3 (国密哈希)
func Sm3(data []byte) []bytefunc Sm3ToHex(data []byte) string
SM4 (国密对称)
func NewSM4CBCAndEraseKey(key, iv []byte) (*crypto.Symmetric, error)func NewSM4CBCByPassword(password, salt []byte) (*crypto.Symmetric, error)func NewSM4GCMAndEraseKey(key, iv []byte) (*crypto.Symmetric, error)func NewSM4GCMByPassword(password, salt []byte) (*crypto.Symmetric, error)
📦 安装
go get apigo.cc/go/crypto-sm
💡 示例
import (
"apigo.cc/go/crypto-sm"
"apigo.cc/go/cast"
)
// SM2 签名示例
a, _ := sm.NewSM2AndEraseKey(priv, pub)
sig := cast.As(a.Sign(data))