MCPcopy Index your code
hub / github.com/deatil/go-cryptobin

github.com/deatil/go-cryptobin @v1.1.1015

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.1.1015 ↗ · + Follow
12,014 symbols 52,530 edges 1,484 files 5,887 documented · 49%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

go-cryptobin

go-cryptobin is a go encrypt or decrypt library.

Go Reference

English | 中文

Desc

  • go-cryptobin library has encrypt / decrypt or sign / verify
  • sym encrypts(Aes/Des/TripleDes/SM4/Tea/Twofish/Xts)
  • encrypt mode(ECB/CBC/PCBC/CFB/NCFB/OFB/NOFB/CTR/GCM/CCM)
  • encrypt padding(NoPadding/ZeroPadding/PKCS5Padding/PKCS7Padding/X923Padding/ISO10126Padding/ISO97971Padding/ISO7816_4Padding/PBOC2Padding/TBCPadding/PKCS1Padding)
  • asym encrypts(Aes(RSA/SM2/ElGamal)
  • asym sign(RSA/RSA-PSS/DSA/ECDSA/EC-GDSA/EdDSA/SM2/ElGamal/ED448/Gost)
  • default setting Aes, ECB, NoPadding

Env

  • Go >= 1.25

Download

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

Get Starting

package main

import (
    "fmt"

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

func main() {
    // encrypt
    cypten := crypto.
        FromString("useData").
        SetKey("dfertf12dfertf12").
        SetIv("dfertf12dfertf12").
        Aes().
        CBC().
        PKCS7Padding().
        Encrypt().
        ToBase64String()

    // decrypt
    cyptde := crypto.
        FromBase64String("i3FhtTp5v6aPJx0wTbarwg==").
        SetKey("dfertf12dfertf12").
        SetIv("dfertf12dfertf12").
        Aes().
        CBC().
        PKCS7Padding().
        Decrypt().
        ToString()

    // i3FhtTp5v6aPJx0wTbarwg==
    fmt.Println("encrypt res:", cypt)
    fmt.Println("decrypt res:", cyptde)
}

Struct Desc

  • default setting Aes, ECB, NoPadding. default not use padding, input need n*16 length, not right length need other padding
// encrypt data
cypt := crypto.
    FromString("useData5useData5").
    SetKey("dfertf12dfertf12").
    Encrypt().
    ToBase64String()
// decrypt data
cyptde := crypto.
    FromBase64String("eZf7c3fcwKlmrqogiEHbJg==").
    SetKey("dfertf12dfertf12").
    Decrypt().
    ToString()
  • Use Desc
// Code
// Tips: SetKey,SetIv,Encrypt Type,Mode,Padding at `Action Type` before can move sorts
ret := crypto.
    FromString("string"). // Data Src
    SetKey("key_string"). // Set Key
    SetIv("iv_string").   // Set Iv
    Aes().                // Encrypt Type
    CBC().                // Mode
    PKCS7Padding().       // Padding
    Encrypt().            // Action Type
    ToBase64String()      // To Data Type

PKG Funcs

  • Data From: FromBytes(data []byte), FromString(data string), FromBase64String(data string), FromHexString(data string)
  • Set Key: SetKey(data string), WithKey(key []byte)
  • Set IV: SetIv(data string), WithIv(iv []byte)
  • Encrypt Type: Aes(), Des(), TripleDes(), Twofish(), Blowfish(), Tea(rounds ...int), Xtea(), Cast5(), RC4(), Idea(), SM4(), Chacha20(counter ...uint32), Chacha20poly1305(additional ...[]byte), Xts(cipher string, sectorNum uint64)
  • Encrypt Mode: ECB(), CBC(), PCBC(), CFB(), OFB(), CTR(), GCM(additional ...[]byte), CCM(additional ...[]byte)
  • Paddings: NoPadding(), ZeroPadding(), PKCS5Padding(), PKCS7Padding(), X923Padding(), ISO10126Padding(), ISO7816_4Padding(),ISO97971Padding(),PBOC2Padding(), TBCPadding(), PKCS1Padding(bt ...string)
  • Action Type: Encrypt(), Decrypt(), FuncEncrypt(f func(Cryptobin) Cryptobin), FuncDecrypt(f func(Cryptobin) Cryptobin)
  • To Data Type: ToBytes(), ToString(), ToBase64String(), ToHexString()

  • more data docs

LICENSE

  • The library LICENSE is Apache2, using the library need keep the LICENSE.

Copyright

  • Copyright deatil(https://github.com/deatil).

Extension points exported contracts — how you extend this code

MacKDFParameters (Interface)
数据接口 [45 implementers]
pkcs12/p12_interface.go
KDFParameters (Interface)
KDFParameters [6 implementers]
pkcs8/pbes2/kdf.go
Padding (Interface)
padding interface struct [21 implementers]
padding/padding.go
KDFParameters (Interface)
数据接口 KDF Parameters [6 implementers]
ssh/ssh_utils.go
IMode (Interface)
模式接口 Mode interface [201 implementers]
cryptobin/crypto/interface.go
BlockCipherMAC (Interface)
Reference: GB/T 15821.1-2020 Security techniques Message authentication codes - Part 1: Mechanisms using block ciphers B [8 …
mac/mac.go
IEncrypt (Interface)
IEncrypt [5 implementers]
gm/sm9/encrypt.go
KeySign (Interface)
签名接口 [5 implementers]
pkcs7/interfaces.go

Core symbols most depended-on inside this repo

New
called by 1917
x509/hash.go
Errorf
called by 1615
tool/test/assert.go
Equal
called by 822
x509/verify.go
HI
called by 753
elliptic/base_elliptic/utils.go
Bytes
called by 644
elliptic/bign/curve.go
Add
called by 606
elliptic/bign/curve.go
Error
called by 395
pkcs12/errors.go
SetBytes
called by 373
elliptic/bign/curve.go

Shape

Function 5,853
Method 4,802
Struct 1,048
TypeAlias 210
Interface 91
FuncType 10

Languages

Go100%

Modules by API surface

cryptobin/crypto/encrypt_multiple.go142 symbols
tool/test/assert_test.go84 symbols
cryptobin/crypto/use.go76 symbols
x509/x509.go75 symbols
tool/test/assert.go72 symbols
cryptobin/crypto/cryptobin_test.go67 symbols
gm/sm2/sm2.go66 symbols
ber/asn1/ber_asn1_test.go64 symbols
gm/sm2/sm2curve/sm2ec_asm.go53 symbols
gm/sm2/sm2_test.go48 symbols
cryptobin/rsa/from.go48 symbols
gm/sm9/encrypt.go47 symbols

For agents

$ claude mcp add go-cryptobin \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page