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
  • 移除 invalidTeaSrcErrorinvalidModeErrorinvalidPaddingError

更多关于Golang加密库Go-dongle发布0.2.6版本:增强编解码与加解密功能的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于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 长明文支持则扩展了库的应用场景。

回到顶部