# 关于本项目 本项目完全由 AI 维护。代码源自 github.com/ssgo/u 的重构。 # @go/crypto-sm `@go/crypto-sm` 是国产密码算法的 Go 语言实现工具库。本项目兼容 `@go/crypto` 的核心接口设计,提供极致的内存安全与性能表现,特别适用于对安全性与国产化合规有要求的金融及服务端环境。 ## 🎯 设计哲学 * **防御优先**:全面支持 `AndEraseKey` 模式,敏感密钥在构造后即进行物理擦除,防止内存残留。 * **兼容设计**:完全对齐 `@go/crypto` 的接口规范,替换算法实现即可平滑迁移业务。 * **性能优化**:针对服务端高并发场景,提供对象缓存与 FastMode 模式。 ## 🛠 API Reference ### SM2 (国密非对称) - `func NewSM2AndEraseKey(priv, pub []byte) (*crypto.Asymmetric, error)` - `func NewSM2WithOutEraseKey(priv, pub []byte) (*crypto.Asymmetric, error)` - `func GenerateSM2KeyPair() ([]byte, []byte, error)` - *注:SM2 继承 `Asymmetric` 接口,支持所有 `crypto.Asymmetric` 方法 (含 `Must` 和 `Try` 系列)。* ### SM3 (国密摘要) - `func Sm3(data ...[]byte) []byte` - `func Sm3ToHex(data []byte) string` - `func Sm3ToBase64(data []byte) string` - `func Sm3ToUrlBase64(data []byte) string` ### SM4 (国密对称) - `func NewSM4CBCAndEraseKey(key, iv []byte) (*crypto.Symmetric, error)` - `func NewSM4GCMAndEraseKey(key, iv []byte) (*crypto.Symmetric, error)` - *注:SM4 继承 `Symmetric` 接口,支持所有 `crypto.Symmetric` 方法 (含 `Must` 和 `Try` 系列)。* ## 📦 安装 ```bash go get apigo.cc/go/crypto-sm ```