Golang加密库Go-dongle发布0.2.6版本:增强编解码与加解密功能
Golang加密库Go-dongle发布0.2.6版本:增强编解码与加解密功能 Dongle 是一个简单、语义化且对开发者友好的 Go 语言包,用于编码解码和加密解密。
Dongle 已被 awesome-go 收录,如果您觉得它有帮助,请给我一个星标。
github.com/golang-module/dongle
更新日志
- 为长明文加密解密添加
tea支持 - 添加对
empty string填充模式的支持 - 将
github.com/tjfoc/gmsm/sm3重命名为github.com/emmansun/gmsm/sm3 - 将
encrypt方法从encrypter.go移至cipher.go,将decrypt方法从decrypter.go移至cipher.go - 移除
invalidTeaSrcError、invalidModeError和invalidPaddingError
更多关于Golang加密库Go-dongle发布0.2.6版本:增强编解码与加解密功能的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于Golang加密库Go-dongle发布0.2.6版本:增强编解码与加解密功能的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
Go-dongle 0.2.6 的更新确实增强了库的实用性和兼容性。以下是针对主要更新的技术说明:
1. TEA 算法支持长明文加密 现在 TEA 算法支持分块加密,可以处理任意长度的明文数据:
import "github.com/golang-module/dongle"
// 加密长文本
ciphertext := dongle.Encrypt.FromString("这是一个很长的明文数据...").ByTea(dongle.TeaCfg{
Key: "1234567890abcdef",
Mode: dongle.CBC,
Padding: dongle.PKCS7,
}).ToHexString()
// 解密
plaintext := dongle.Decrypt.FromHexString(ciphertext).ByTea(dongle.TeaCfg{
Key: "1234567890abcdef",
Mode: dongle.CBC,
Padding: dongle.PKCS7,
}).ToString()
2. 空字符串填充模式
新增的 NoPadding 模式允许处理已对齐的数据:
// 使用 NoPadding 模式
ciphertext := dongle.Encrypt.FromString("data").ByDes(dongle.DesCfg{
Key: "12345678",
Mode: dongle.ECB,
Padding: dongle.NoPadding, // 新增的填充模式
}).ToBase64String()
3. SM3 依赖更新 SM3 哈希计算的依赖已更新到新的维护分支:
// SM3 哈希计算
hash := dongle.Encrypt.FromString("hello").BySm3().ToHexString()
// 输出:66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0
4. 代码结构优化
加密解密方法统一到 cipher.go,提高了代码的可维护性:
// 内部实现更清晰
type Cipher interface {
Encrypt(c *CipherCtx) error
Decrypt(c *CipherCtx) error
}
5. 错误处理简化 移除了特定的错误类型,使用更通用的错误处理机制:
// 错误处理示例
result := dongle.Decrypt.FromHexString("invalid").ByAes(aesCfg)
if result.Error != nil {
// 统一的错误处理
log.Println(result.Error)
}
这些更新使 Go-dongle 在保持 API 简洁的同时,提供了更强大的加密功能和更好的开发体验。SM3 依赖的更新确保了库的长期维护性,而 TEA 长明文支持则扩展了库的应用场景。

