crypto-sm/README.md

36 lines
1.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 关于本项目
本项目完全由 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` 接口,支持 `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
```