Golang加密库Go-dongle发布0.1.4版本:增强编解码与加解密功能

Golang加密库Go-dongle发布0.1.4版本:增强编解码与加解密功能 Dongle 是一个简单、语义化且对开发者友好的 Go 语言包,用于编码解码和加密解密。

Dongle 已被 awesome-go 收录,如果您觉得它有帮助,请给我一个星标。

github.com/golang-module/dongle

更新日志

  • 新增对 tea 加密和解密的支持
  • 新增对 bcrypt 签名和验证的支持
  • 新增 cipherMode、cipherPadding 和 pkcsVersion 类型别名
  • 修复已知错误
  • 将单元测试覆盖率提升至 100%

功能列表

  • [x] 通过 Hex 进行编码和解码
  • [x] 通过 Base16 进行编码和解码
  • [x] 通过 Base32 进行编码和解码
  • [x] 通过 Base58 进行编码和解码
  • [x] 通过 Base62 进行编码和解码
  • [x] 通过 Base64 进行编码和解码
  • [x] 通过 Base64URL 进行编码和解码
  • [x] 通过 SafeURL 进行编码和解码
  • [x] 通过 Base85 进行编码和解码
  • [x] 通过 Base91 进行编码和解码
  • [x] 通过 Base100 进行编码和解码
  • [x] 通过 Md4 进行加密
  • [x] 通过 Hmac-md4 进行加密
  • [x] 通过 Md5 进行加密
  • [x] 通过 Hmac-md5 进行加密
  • [x] 通过 Sha1 进行加密
  • [x] 通过 Hmac-sha1 进行加密
  • [x] 通过 Sha224 进行加密
  • [x] 通过 Hmac-sha224 进行加密
  • [x] 通过 Sha256 进行加密
  • [x] 通过 Hmac-sha256 进行加密
  • [x] 通过 Sha384 进行加密
  • [x] 通过 Hmac-sha384 进行加密
  • [x] 通过 Sha512 进行加密
  • [x] 通过 Hmac-sha512 进行加密
  • [ ] 通过 Rc2 进行加密
  • [x] 通过 Rc4 进行加密
  • [ ] 通过 Rc5 进行加密
  • [ ] 通过 Rc6 进行加密
  • [x] 通过 Tea 进行加密和解密
  • [ ] 通过 Xtea 进行加密和解密
  • [x] 通过 Aes 进行加密和解密,支持 ECB/CBC/CTR/CFB/OFB 模式和 No/Zero/PKCS5/PKCS7 填充
  • [x] 通过 Des 进行加密和解密,支持 ECB/CBC/CTR/CFB/OFB 模式和 No/Zero/PKCS5/PKCS7 填充
  • [x] 通过 3des 进行加密和解密,支持 ECB/CBC/CTR/CFB/OFB 模式和 No/Zero/PKCS5/PKCS7 填充
  • [x] 通过 Rsa 进行加密和解密,支持 PKCS1/PKCS8 版本
  • [ ] 通过 Ecc 进行加密和解密
  • [ ] 通过 Sm2 进行加密和解密
  • [x] 通过 Sm3 进行加密
  • [ ] 通过 Sm4 进行加密和解密
  • [ ] 通过 Sm7 进行加密和解密
  • [ ] 通过 Sm9 进行加密和解密
  • [x] 通过 Bcrypt 进行签名和验证
  • [ ] 通过 Rsa 进行签名和验证
  • [ ] 通过 Dsa 进行签名和验证

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

2 回复

很好!谢谢。

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


Go-dongle 0.1.4版本的发布确实带来了几个实用的新功能。新增的TEA加密支持可以这样使用:

package main

import (
    "fmt"
    "github.com/golang-module/dongle"
)

func main() {
    // TEA加密示例
    plaintext := "hello world"
    key := "1234567890123456"
    
    // 加密
    encrypted := dongle.Encrypt.FromString(plaintext).ByTea(dongle.TeaCfg{
        Key: key,
    }).ToHexString()
    
    fmt.Printf("加密结果: %s\n", encrypted)
    
    // 解密
    decrypted := dongle.Decrypt.FromHexString(encrypted).ByTea(dongle.TeaCfg{
        Key: key,
    }).ToString()
    
    fmt.Printf("解密结果: %s\n", decrypted)
}

BCrypt签名验证功能也很实用:

package main

import (
    "fmt"
    "github.com/golang-module/dongle"
)

func main() {
    // BCrypt示例
    password := "mysecretpassword"
    
    // 生成hash
    hashed := dongle.Bcrypt.MustEncrypt(password)
    fmt.Printf("生成的hash: %s\n", hashed)
    
    // 验证密码
    isValid := dongle.Bcrypt.MustVerify(password, hashed)
    fmt.Printf("密码验证结果: %v\n", isValid)
}

新增的类型别名让代码更清晰:

package main

import (
    "fmt"
    "github.com/golang-module/dongle"
)

func main() {
    // 使用新的类型别名
    cfg := dongle.AesCfg{
        Mode:    dongle.CBC,      // cipherMode类型别名
        Padding: dongle.PKCS7,    // cipherPadding类型别名
        Key:     "1234567890123456",
        IV:      "1234567890123456",
    }
    
    data := "sensitive data"
    encrypted := dongle.Encrypt.FromString(data).ByAes(cfg).ToBase64String()
    fmt.Printf("AES加密结果: %s\n", encrypted)
}

单元测试覆盖率100%说明这个库的质量控制做得很好。TEA算法虽然相对简单,但在某些轻量级加密场景下还是有用的。BCrypt的加入让密码存储更加安全。

回到顶部