关于本项目
本项目完全由 AI 维护。代码源自 github.com/ssgo/u 的重构。
@go/crypto
@go/crypto 是一个为“安全闭环、消除摩擦”设计的加密工具库。它强制执行内存安全(基于 go/safe)与资源自动回收,并提供语义化的加解密与 Hash API。
🎯 设计哲学
- 内存安全闭环:通过
safe.SafeBuf保护密钥,确保敏感数据在内存中加密存储,并在使用后自动/手动擦除,防止内存 Dump 攻击。 - 消除摩擦 (Frictionless):废除
Must前缀函数,全面结合go/cast的As函数。 - 资源自动回收:利用
runtime.SetFinalizer确保加密实例在垃圾回收时自动释放密钥资源。 - 高性能混合体系:内置 AES (CBC/GCM)、RSA (PSS/OAEP)、ECDSA、Ed25519、X25519,支持 FastMode 缓存解析结果。
🛠 API Reference
对称加密 (Symmetric)
func NewAESCBC(safeKeyBuf, safeIvBuf *safe.SafeBuf) (*Symmetric, error)func NewAESCBCAndEraseKey(key, iv []byte) (*Symmetric, error)func (s *Symmetric) EncryptBytes(data []byte) ([]byte, error)func (s *Symmetric) DecryptBytes(data []byte) ([]byte, error)func (s *Symmetric) TryDecrypt(data []byte) []byte(解密失败返回原始数据)
非对称加密与签名 (Asymmetric)
func NewRSA(safePrivateKeyBuf, safePublicKeyBuf *safe.SafeBuf) (*Asymmetric, error)func (a *Asymmetric) Sign(data []byte, hash ...crypto.Hash) ([]byte, error)func (a *Asymmetric) Verify(data, signature []byte, hash ...crypto.Hash) (bool, error)func (a *Asymmetric) EncryptBytes(data []byte) ([]byte, error)func (a *Asymmetric) DecryptBytes(data []byte) ([]byte, error)
密钥生成
func GenerateRSAKeyPair(bitSize int) (priv, pub []byte, err error)func GenerateECDSAKeyPair(bitSize int) (priv, pub []byte, err error)func GenerateEd25519KeyPair() (priv, pub []byte, err error)func GenerateX25519KeyPair() (priv, pub []byte, err error)
哈希算法 (Hash)
func MD5(data []byte) []bytefunc Sha256(data []byte) []bytefunc HmacSha256(data, key []byte) []byte
📦 安装
go get apigo.cc/go/crypto
💡 示例 (配合 cast.As 消除摩擦)
import (
"apigo.cc/go/crypto"
"apigo.cc/go/cast"
)
// 使用 cast.As 替代原有的 MustEncrypt 系列
cipher, _ := crypto.NewAESCBCAndEraseKey(key, iv)
ciphertext := cast.As(cipher.EncryptBytes(plaintext))
Description
Languages
Go
100%