在 Go 语言开发中,我们常会用到加密、签名、证书管理等功能,比如接口通信要 AES 加密,用户登录要 RSA 签名,服务部署要生成 TLS 证书。虽然 Go 原生crypto包能满足基础需求,但代码复杂冗余。

今天推荐一个宝藏开源库——forgoer/openssl,它用简洁的API封装了OpenSSL的常用加密功能,无论是AES、RSA还是HMAC,通通只需一行代码搞定!


🔐 一、项目是什么?

forgoer/openssl 是一个轻量级的Go语言库,对OpenSSL的对称加密(如AES、DES、3DES)和非对称加密(如RSA)进行了优雅封装。

开发者无需深入OpenSSL底层细节,即可快速实现安全的数据加解密、签名验证等操作。

项目地址
GitHub:https://github.com/forgoer/openssl

go get -u github.com/forgoer/openssl

✨ 二、核心功能一览

1️⃣ 对称加密(超简单调用)

forgoer/openssl支持 AES (128/192/256位)、DES3DES,并提供 ECB/CBC 两种模式。它是一个工具集,是对称非对称加解密的函数包装。

  • AES
  • DES
  • 3DES
  • RSA
  • HMAC-SHA
  • ...

示例:AES-ECB加密解密

import "github.com/forgoer/openssl"

// 加密(自动填充PKCS#7)
src := []byte("HelloWorld")
key := []byte("1234567890123456") // 16字节密钥
dst, _ := openssl.AesECBEncrypt(src, key, openssl.PKCS7_PADDING)

// 解密
src, _ := openssl.AesECBDecrypt(dst, key, openssl.PKCS7_PADDING)
fmt.Println(string(src)) // 输出: HelloWorld

2️⃣ 非对称加密(RSA全套支持)

// 生成RSA密钥对(2048位)
openssl.RSAGenerateKey(2048, privateKeyWriter)
openssl.RSAGeneratePublicKey(privateKey, publicKeyWriter)

// 加密/解密
cipherText, _ := openssl.RSAEncrypt(plainText, publicKey)
plainText, _ := openssl.RSADecrypt(cipherText, privateKey)

// 签名/验签
sign, _ := openssl.RSASign(data, privateKey, crypto.SHA256)
err := openssl.RSAVerify(data, sign, publicKey, crypto.SHA256)

3️⃣ 哈希与HMAC(快捷调用)

// SHA256哈希
hash := openssl.Sha256("data")

// HMAC-SHA256签名(带密钥)
mac := openssl.HmacSha256ToString("secret_key", "data")

🚀 三、为什么值得用?

forgoer/openssl不是 “重复造轮子”,它让复杂的 OpenSSL 操作变得像写 “Hello World” 一样简单,同时兼顾性能和兼容性。

  1. 开箱即用:无需配置OpenSSL环境,纯Go实现;
  2. 符合标准:支持PKCS#7填充等通用规范;
  3. 完整覆盖:从AES到RSA,常见加密场景全覆盖;
  4. 文档清晰:每个函数均提供Go代码示例;
  5. 持续维护:作者积极回应Issue,支持PR贡献。

💻 四、实战场景建议

  • 敏感配置加密(如数据库密码)
  • API通信数据加密
  • JWT令牌签名验证
  • 文件内容完整性校验(HMAC)
  • 支付接口敏感参数加密

🌟 结语

forgoer/openssl 是Go开发者处理加密任务的“瑞士军刀”。它用极简的接口隐藏了OpenSSL的复杂度,让安全开发不再成为业务落地的绊脚石。

如果你正在寻找一个轻量、可靠且符合工业标准的加密库,不妨给它一个Star吧!

立即体验
👉 https://github.com/forgoer/openssl