V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  gouguoyin  ›  全部回复第 2 页 / 共 5 页
回复总数  88
1  2  3  4  5  
@cnbattle 在开发 v1 版本时 go 还没有泛型,v2 后开始支持泛型,使用泛型重构,确实没办法兼容 v1 版本
@cnbattle carbon v1 和 v2 一个是值传递,一个是指针专递,有一些没办法兼容或者兼容需要大量的冗余代码
@apkapb readme 只是简单介绍下用法,详细的在 https://dongle.go-pkg.com/ ,该文档是由 claude code 翻译的
@seers 实践出真知
@nszr 这个库也是自己因为在实际业务对接中踩过的坑太多,但是又没有成熟的第三方密码库,因此才封装集成该库,方便自己以后对接中使用,同时开源希望给同样踩过坑的 v 友们带来方便,也算是反哺 go 生态。dongle 每一个算法都以 golang 标准库和 python 权威库作为基准数据进行过核验校对。
@roundgis 感谢支持,欢迎提出宝贵意见
@fenglangjuxu dongle 是英文加密狗的意思
以非对称加密算法 rsa 为例,dongle 只需要以下几行,如果都使用默认,只需要 3 、4 行代码

kp := keypair.NewRsaKeyPair()
// 设置密钥格式(可选,默认为 PKCS8 )
kp.SetFormat(keypair.PKCS8)
// 设置哈希算法(可选,默认为 SHA256 )
kp.SetHash(crypto.SHA256)
// 设置公钥
kp.SetPublicKey([]byte("公钥字符串"))
// 设置私钥
kp.SetPrivateKey([]byte("私钥字符"))

dongle.Encrypt.FromString("hello world").ByRsa(kp).ToHexString()
@chennqqi 原生库过于原生,使用起来繁琐,心智负担重,并且分散在多个包中,一部分算法在标准库中,一部分在`golang.org/x/crypto`, `dongle`包中, 则将这些功能整合为统一接口,通过 `Encode`、`Decode`、`Hash`、`Encrypt` 等入口即可完成所有操作,无需记忆多个包的细节。例如,Md5 哈希算法在原生标准库中需要手动处理哈希对象创建、数据写入、摘要计算及结果转换,而 dongle 只需一行代码:
```go
dongle.Hash.FromString("hello world").ByMd5().ToHexString()
```
对于像 aes/rsa 等复杂点的算法,节省的代码量更不是一星半点,以 dongle 里 `aes` 为例
```go
import "github.com/dromara/dongle/crypto/cipher"

c := cipher.NewAesCipher(cipher.CBC)
// 设置密钥( 16 字节)
c.SetKey([]byte("dongle1234567890"))
// 设置初始化向量( 16 字节)
c.SetIV([]byte("1234567890123456"))
// 设置填充模式(可选,默认为 PKCS7 )
c.SetPadding(cipher.PKCS7)

dongle.Encrypt.FromString("hello world").ByAes(c).ToHexString()
```
如果换成原生库实现需要多少代码量
再比如标准库 rsa 中私钥密钥需要是 pem 格式的,而在实际对接中往往给的是一长串字符串,需要自己转换成 pem 格式,pem 还分 pkcs#1 和 pkcs#8 格式
@DefoliationM 封装标准库的复杂细节,统一的对外输出 api ,同时保持灵活性和性能,所有方法原生支持流式处理,可直接处理大文件或流数据的编码 / 加密,同时补充标准库不支持的算法,比如标准库 aes 支持的填充模式和分块模式不够全面,在与其他语言对接时可能需要自己实现填充模式和分块模式。
@Meld 感谢支持
@make17better 万分感谢,可以加我微信 gouguolei
@make17better 我一直想做一个土拨鼠抱着一个钟表的图片,感觉更符合 carbon 的用途
@make17better 好的,我试试😄
@make17better 感谢您的宝贵意见,因为不是专业设计,这个背景图是在网上找的现成的
@liaohongxing 可以升级到最新版,另外 gorm 的 pg 驱动有问题,也发布新版了
@pkoukk 感谢支持
v1 和 v2 版本差别还是挺大的
2024-11-27 11:23:30 +08:00
回复了 ginakira 创建的主题 Go 编程语言 [2024 年] 有哪些大家觉得好用的 Go Web 框架/脚手架?
1  2  3  4  5  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   861 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 14ms · UTC 22:36 · PVG 06:36 · LAX 14:36 · JFK 17:36
♥ Do have faith in what you're doing.