go-cryptobin 常用加密解密库最新大版本发布了

tuzhiya · 2024-03-01 20:32:23 · 1091 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2024-03-01 20:32:23 的主题,其中的信息可能已经有所发展或是发生改变。

更新内容

  • 新版本优化了PKCS8和PKCS12编码解码,
  • 重构了部分代码,
  • 添加了对 gost 的支持,
  • 将 x509 目录移动到根目录,
  • 添加了更多的对称加密和模式支持

项目介绍

  • go-cryptobin 包括常用的对称加密和非对称加密及签名验证
  • 项目地址 https://github.com/deatil/go-cryptobin
  • 文档地址 https://github.com/deatil/go-cryptobin/blob/main/docs/README.md
  • 对称加密解密(Aes/Des/TripleDes/SM4/Tea/Twofish/Xts)
  • 对称加密解密模式(ECB/CBC/PCBC/CFB/OFB/CTR/GCM/CCM)
  • 对称加密解密补码(NoPadding/ZeroPadding/PKCS5Padding/PKCS7Padding/X923Padding/ISO10126Padding/ISO97971Padding/ISO7816_4Padding/TBCPadding/PKCS1Padding)
  • 非对称加密解密(RSA/SM2/EIGamal)
  • 非对称签名验证(RSA/PSS/DSA/ECDSA/EdDSA/SM2/EIGamal)
  • 默认 Aes, ECB, NoPadding
  • 如果对你有帮助或者喜欢的话可以点个小星星支持下我们喔

下载安装

go get -u github.com/deatil/go-cryptobin

开始使用

package main

import (
    "fmt"

    "github.com/deatil/go-cryptobin/cryptobin/crypto"
)

func main() {
    // 加密
    cypt := crypto.
        FromString("useData").
        SetKey("dfertf12dfertf12").
        Aes().
        ECB().
        PKCS7Padding().
        Encrypt().
        ToBase64String()

    // 解密
    cyptde := crypto.
        FromBase64String("i3FhtTp5v6aPJx0wTbarwg==").
        SetKey("dfertf12dfertf12").
        Aes().
        ECB().
        PKCS7Padding().
        Decrypt().
        ToString()

    // i3FhtTp5v6aPJx0wTbarwg==
    fmt.Println("加密结果:", cypt)
    fmt.Println("解密结果:", cyptde)
}

结构说明

  • 默认方式 Aes, ECB, NoPadding

    // 加密数据
    cypt := crypto.
     FromString("useData").
     SetKey("dfertf12dfertf12").
     Encrypt().
     ToBase64String()
    // 解密数据
    cyptde := crypto.
     FromBase64String("i3FhtTp5v6aPJx0wTbarwg==").
     SetKey("dfertf12dfertf12").
     Decrypt().
     ToString()
    
  • 结构说明

    // 使用代码
    // 注意: 数据来源,设置密码,加密类型,加密模式,补码方式 在 操作类型 之前, 可以调换顺序
    ret := crypto.
     FromString("string"). // 数据来源, 待加密数据/待解密数据
     SetKey("key").        // 设置密码
     SetIv("iv_string").   // 设置向量
     Aes().                // 加密类型
     CBC().                // 加密模式
     PKCS7Padding().       // 补码方式
     Encrypt().            // 操作类型, 加密或者解密
     ToBase64String()      // 返回结果数据类型
    

可用方法

  • 数据来源: FromBytes(data []byte), FromString(data string), FromBase64String(data string), FromHexString(data string)
  • 设置密码: SetKey(data string), WithKey(key []byte)
  • 设置向量: SetIv(data string), WithIv(iv []byte)
  • 加密类型: Aes(), Des(), TripleDes(), Twofish(), Blowfish(), Tea(rounds ...int), Xtea(), Cast5(), RC4(), Idea(), SM4(), Chacha20(nonce string, counter ...uint32), Chacha20poly1305(nonce string, additional string), Xts(cipher string, sectorNum uint64)
  • 加密模式: ECB(), CBC(), PCBC(), CFB(), OFB(), CTR(), GCM(nonce string, additional ...string), CCM(nonce string, additional ...string)
  • 补码方式: NoPadding(), ZeroPadding(), PKCS5Padding(), PKCS7Padding(), X923Padding(), ISO10126Padding(), ISO7816_4Padding(), TBCPadding(), PKCS1Padding(bt ...string)
  • 操作类型: Encrypt(), Decrypt(), FuncEncrypt(f func(Cryptobin) Cryptobin), FuncDecrypt(f func(Cryptobin) Cryptobin)
  • 返回数据类型: ToBytes(), ToString(), ToBase64String(), ToHexString()

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1091 次点击  ∙  1 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传