2026-04-23 21:02:09 +08:00
|
|
|
|
# 关于本项目
|
|
|
|
|
|
本项目完全由 AI 维护。代码源自 github.com/ssgo/u 的重构。
|
2026-04-23 19:46:10 +08:00
|
|
|
|
|
2026-04-23 21:02:09 +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)`
|
2026-04-23 21:48:38 +08:00
|
|
|
|
- *注:SM2 继承 `Asymmetric` 接口,支持所有 `crypto.Asymmetric` 方法 (含 `Must` 和 `Try` 系列)。*
|
2026-04-23 21:02:09 +08:00
|
|
|
|
|
|
|
|
|
|
### SM3 (国密摘要)
|
|
|
|
|
|
- `func Sm3(data ...[]byte) []byte`
|
|
|
|
|
|
- `func Sm3ToHex(data []byte) string`
|
|
|
|
|
|
- `func Sm3ToBase64(data []byte) string`
|
2026-04-23 21:48:38 +08:00
|
|
|
|
- `func Sm3ToUrlBase64(data []byte) string`
|
2026-04-23 21:02:09 +08:00
|
|
|
|
|
|
|
|
|
|
### SM4 (国密对称)
|
|
|
|
|
|
- `func NewSM4CBCAndEraseKey(key, iv []byte) (*crypto.Symmetric, error)`
|
|
|
|
|
|
- `func NewSM4GCMAndEraseKey(key, iv []byte) (*crypto.Symmetric, error)`
|
2026-04-23 21:48:38 +08:00
|
|
|
|
- *注:SM4 继承 `Symmetric` 接口,支持所有 `crypto.Symmetric` 方法 (含 `Must` 和 `Try` 系列)。*
|
2026-04-23 21:02:09 +08:00
|
|
|
|
|
|
|
|
|
|
## 📦 安装
|
|
|
|
|
|
```bash
|
|
|
|
|
|
go get apigo.cc/go/crypto-sm
|
|
|
|
|
|
```
|