gocrypt

package module
v1.2.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 4, 2023 License: MIT Imports: 3 Imported by: 0

README

gocrypt

Go Report Card MIT license Build Status Foundation GoDoc Sourcegraph Release TODOs goproxy.cn

gocryptGo实现AES加解密、3DES加解密、RSA加解密(私钥加密公钥解密、公钥加密私钥解密)。

如何使用

  1. 首先需要安装Go(需要1.15+版本),然后可以使用下面的Go命令导入gocrypt包。
$ go get github.com/ZYallers/gocrypt
  1. 使用案例:
package gocrypt

import (
	"fmt"
	"github.com/ZYallers/gocrypt/aes"
	"github.com/ZYallers/gocrypt/des3"
	"github.com/ZYallers/gocrypt/rsa"
)

const (
	aesKey  = "I98NTHNPezFnbe8iCaSc1xMPAv8ZtTil"
	des3key = "PH5yDbhyPCQmKemfdV7S2T8N"
	pubKey  = `-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9jxNe1BcLJBbDyeRj80V
H1cfIs+3nF14EgffwoEa2lx14V4wFSaZQPQTmpS1j2Q9cCLLJC4evdb6jtiZpEDt
tXgtLkvHp3m4ITZqcujavP5UqJNowbsCZEh84GuG7qkaCx1jiTBMEAv3WMj0dwlV
hxLlrxlQf22WW+s0LiyuWAsxtAXeTLzoTNdRAWISDHX8r25zsjZzBC+vxDH/Y8GA
WHesgj/Mdb/5w7UiVOIJF0I4EtcD0kmWWq5Qo2mO1jldppvoM1tHpFpFxR2XGtPt
dgOkRV3WBKT+kEr4nqi/hkLYQSuQiCqRfEi9cZQimVsAdeNsBNQhbHn1+Ai1teoD
1wIDAQAB
-----END PUBLIC KEY-----
`
	priKey = `-----BEGIN PRIVATE KEY-----
MIIEowIBAAKCAQEA9jxNe1BcLJBbDyeRj80VH1cfIs+3nF14EgffwoEa2lx14V4w
FSaZQPQTmpS1j2Q9cCLLJC4evdb6jtiZpEDttXgtLkvHp3m4ITZqcujavP5UqJNo
wbsCZEh84GuG7qkaCx1jiTBMEAv3WMj0dwlVhxLlrxlQf22WW+s0LiyuWAsxtAXe
TLzoTNdRAWISDHX8r25zsjZzBC+vxDH/Y8GAWHesgj/Mdb/5w7UiVOIJF0I4EtcD
0kmWWq5Qo2mO1jldppvoM1tHpFpFxR2XGtPtdgOkRV3WBKT+kEr4nqi/hkLYQSuQ
iCqRfEi9cZQimVsAdeNsBNQhbHn1+Ai1teoD1wIDAQABAoIBAADaVp5dueQBn/8e
cPehizgvkhEJzSYCgN73HgRLdC9bcKEWNW5tUsyRy9uWNkbH3xqbVD7M1hhsPTPv
diDGhMxDHUzywD9JQaUDzjyVp+RNsTdgQ1WgczKruZsBZFdBSLDPKkAYZbsMf4/U
KlybMKumGhuQJ+I5G/M3jle2mef+KDGoWl1Mc/3TNeqUp6NZZKi2H5okZEHoNgeL
8Kyh8cBBih4D0UOU//8eRgUBxIVrHdkcLRtVx5OJA3LWTLPDVGNGXUewlpER/uLx
9oXhYfTTYWGv/UZIiq3CWVsFopui7mTCxDZn7452vDNp1wYqPUkhLYzhc3d9mXF8
ZMGHhKECgYEA+qZdLfDrOXjYjnOubcGlIETf8WTjHZanqpofFynrB6VaTnrPa+pK
afXCnVENbU7TVRyhf/Nwox44LSPrzDiVPDnAxElrVwm5gXbGFGk5bd1yaxmaW2jB
YrBxD6UvxnCdwL0AWhbfjb5YQkV0F/8fPvjLVzq/fa+3xL5eYaTARicCgYEA+33R
Q1wGXDA+NLElTFKsw3zYlk1VI3hHz04yPClZ/Gu9Flr3ZJrzN7TVCua/tqOgNQg5
yBY8StiN1vqzSL9wFXdJCMlhjb81rdFUuiFbh0FZusk7EErl6DjpkbgSw8YYFrxg
P0UktpqmbXjEMzIu16Coy2tZCm29wXtCTWMuEtECgYAJQ1iyN/MZfqPSL+hEWiG2
HZWBIE9capLrtSJtArmS4MODnvpHbLMvU0vL8JDkd0NMI/C7/80r2hQNZwRx2a16
OlArcOMspklaxX7whir/Km3uE1YnBqoO8aJcB6jKVqMd2l5G9g1w+ZXdbR+rO1x2
QU+Se7NT+8h41ug6B5KrhQKBgGRoyYIxXcC06kEzcQbWA3BRilAINDPjNBiKyffH
MsxbX7VrQFcEnpLhOiYOFwEetzo1PIyshAoGCCuLEMW82U1YwOonLTHg49ewOjnO
U7Le3qp66YAJx10+S9MIQUW0860wLOVV/+CAQm52xy8BnD4vQPVmuLg3NInpYoFv
VdfhAoGBAJvlFW5MSvklFiBdYiDpI4TZ4T5AbthM2+HzUONyTZOqL++6xsqNZ3g1
pUPK39jiOO3USu/xOCVYUWJhD0awYzXK36ufd0ZF8uFPzNwleu82XXKVVTaG+7eo
7pkTAK3/D60jl/S2dRwpCGQViOpshOVasQE1i6skMknTWqEvrJh1
-----END PRIVATE KEY-----
`
)

func init() {
	aes.CbcCrypto.SetAesKey(aesKey)
	des3.CbcCrypto.SetDes3Key(des3key)
	if err := rsa.Crypto.SetPubKey(pubKey); err != nil {
		panic(err)
	}
	if err := rsa.Crypto.SetPriKey(priKey); err != nil {
		panic(err)
	}
}

func main() {
	// AES
	b, err := aes.CbcCrypto.Encrypt([]byte("hello aes"))
	if err != nil {
		panic(err)
	}
	fmt.Println("aes encrypt=", aes.CbcCrypto.Encode(b))
	b, err = aes.CbcCrypto.Decrypt(b)
	if err != nil {
		panic(err)
	}
	fmt.Println("aes decrypt=", aes.CbcCrypto.String(b))

	// 3DES
	b, err = des3.CbcCrypto.Encrypt([]byte("hello des3"))
	if err != nil {
		panic(err)
	}
	fmt.Println("des3 encrypt=", des3.CbcCrypto.Encode(b))
	b, err = des3.CbcCrypto.Decrypt(b)
	if err != nil {
		panic(err)
	}
	fmt.Println("des3 decrypt=", des3.CbcCrypto.String(b))

	// RSA
	if bte, err := rsa.Crypto.Encrypt([]byte("hello rsa"), rsa.PubKeyEncrypt); err != nil {
		panic(err)
	} else {
		fmt.Println("rsa public key encrypt=", rsa.Crypto.Encode(bte))
		if b, err := rsa.Crypto.Decrypt(bte, rsa.PriKeyDecrypt); err != nil {
			panic(err)
		} else {
			fmt.Println("rsa private key decrypt=", rsa.Crypto.String(b))
		}
	}
	if bte, err := rsa.Crypto.Encrypt([]byte("hello rsa"), rsa.PriKeyEncrypt); err != nil {
		panic(err)
	} else {
		fmt.Println("rsa private key encrypt=", rsa.Crypto.Encode(bte))
		if b, err := rsa.Crypto.Decrypt(bte, rsa.PubKeyDecrypt); err != nil {
			panic(err)
		} else {
			fmt.Println("rsa public key decrypt=", rsa.Crypto.String(b))
		}
	}
}

运行输出结果:

aes encrypt= DSr41kfl6DuYe0xY1BwhXA==
aes decrypt= hello aes
des3 encrypt= XjXiGowut6GsnGpe9Lavjw==
des3 decrypt= hello des3
rsa public key encrypt= RT3DJe39wFH5gtn5fA3O1AgMAbTMIL5XNiKYNDQChCtWDVKFL5ePgwHAUKB8wGkgSUVYcaFOeuG7XzF+odJuXgLLe2Xzk0J72E+mDS8yLeYskg9G6LrouaRNFA41uTDk7yPJQjDq3rPgRf8ZjN8u0zU/bYhcQUUp8eZi5Rqk/3zJTPn/bFUTGCo/YzCk+PA7j399K43VvnpqrML0MS1wJZc74ekBVwAKMG44RpnfZa7oWk5sI1V7Z9XAlNZhH0n6WcCMjTUjmI7h8w7RuQiTw5KuEF4D27hyAM0oIiYjTP6Ab9GRp2ISvz2/pUThdMuJdKBuK50wZrKbTExpznf/Ww==
rsa private key decrypt= hello rsa
rsa private key encrypt= Oacl0SwoeeeVcwNroJDz/U/yt42q1h2wPLjazmoOh4wQw2qyct2n0eVfov1RfG8iq41mBsWDYBDyOitHzcLXQyt3xUPv0BVj1+3bsknC8opfpVY35PApS4YBy7SsB0KOl10Avz6gmY7dL1HWwrMsB5ACGgPqXbxdSquVDL3m8/048IbUD2zv/TpVjbxa8sZ+FymlkGQQOE7+RQQgtONiQEvYhTzF10dHnScjN9D39Nky3HADM+ltXsg5Ld3KDRVNMnjmqyZ4snUEO5RdFTBnGFIpKa0lHazPfL8jQhybp328+gD4lRTOZ9R6POId0Efh6wIbBmchlGZtru27L8TGIA==
rsa public key decrypt= hello rsa

License

Released under the MIT License

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func PKCS7Padding added in v1.1.2

func PKCS7Padding(data []byte, blockSize int) []byte

func PKCS7UnPadding added in v1.1.2

func PKCS7UnPadding(data []byte) []byte

func RecoverError

func RecoverError(err *error)

Types

type Base64

type Base64 struct {
}

func (*Base64) Decode

func (b *Base64) Decode(s string) ([]byte, error)

func (*Base64) Encode

func (b *Base64) Encode(bytes []byte) string

func (*Base64) String

func (b *Base64) String(bytes []byte) string

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL