crypto-sm/README.md

36 lines
1.5 KiB
Markdown
Raw Normal View History

# 关于本项目
本项目完全由 AI 维护。代码源自 github.com/ssgo/u 的重构。
2026-04-23 19:46:10 +08:00
# @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` 接口,支持 `Sign`/`Verify`/`Encrypt`/`Decrypt`。*
### SM3 (国密摘要)
- `func Sm3(data ...[]byte) []byte`
- `func Sm3ToHex(data []byte) string`
- `func Sm3ToBase64(data []byte) string`
### SM4 (国密对称)
- `func NewSM4CBCAndEraseKey(key, iv []byte) (*crypto.Symmetric, error)`
- `func NewSM4GCMAndEraseKey(key, iv []byte) (*crypto.Symmetric, error)`
- *注SM4 继承 `Symmetric` 接口,支持 `EncryptBytes`/`DecryptBytes`。*
## 📦 安装
```bash
go get apigo.cc/go/crypto-sm
```