# README
Golang的加解密、签验名的二次封装库
一、介绍
!!😫 。😘😘
二、安装
go get -u github.com/ggdream/crypto
三、例子
package main
import (
"fmt"
"github.com/ggdream/crypto/rsa"
)
func main() {
pri, pub := rsa.GenerateKey(1024)
cipher := rsa.Encrypt([]byte("我喜欢你"), pub)
fmt.Println(cipher)
plaint := rsa.Decrypt(cipher, pri)
fmt.Println(string(plaint))
}
四、函数签名
1. RSA
// package: github.com/ggdream/crypto/rsa
// 操作秘钥
func GenerateKey(bits int) (*rsa.PrivateKey, *rsa.PublicKey)
func GenerateHexKey(bits int) (string, string)
func GetEN(publicKey *rsa.PublicKey) (string, string)
func SetEN(exp, mod string) *rsa.PublicKey
func GetPrivateKey(hexKey string) *rsa.PrivateKey
func GetPublicKey(hexKey string) *rsa.PublicKey
func SetPrivateKeyToPem(privateKey *rsa.PrivateKey) string
func SetPublicKeyToPem(publicKey *rsa.PublicKey) string
func GetPrivateKeyFromPem(privateKeyPem string) *rsa.PrivateKey
func GetPublicKeyFromPem(publicKeyPem string) *rsa.PublicKey
// 加密解密
func Encrypt(text []byte, publicKey *rsa.PublicKey) []byte
func Decrypt(text []byte, privateKey *rsa.PrivateKey) []byte
// 签名验签
func Sign(text []byte, privateKey *rsa.PrivateKey) []byte
func Verify(text, sign []byte, publicKey *rsa.PublicKey) bool
2. ECC
// package: github.com/ggdream/crypto/ecc
// 操作秘钥
func GenerateKey(model int) (*ecdsa.PrivateKey, *ecdsa.PublicKey)
func GenerateKeyEth() (*ecies.PrivateKey, *ecies.PublicKey)
func SetPrivateKeyToPem(privateKey *ecdsa.PrivateKey) string
func SetPublicKeyToPem(publicKey *ecdsa.PublicKey) string
func GetPrivateKeyFromPem(privateKeyPem string) *ecdsa.PrivateKey
func GetPublicKeyFromPem(publicKeyPem string) *ecdsa.PublicKey
// 加密解密
func Encrypt(text []byte, publicKey *ecies.PublicKey) []byte
func Decrypt(text []byte, privateKey *ecies.PrivateKey) []byte
// 签名验签
func Sign(text []byte, privateKey *ecdsa.PrivateKey) ([]byte, []byte)
func Verify(text, rBytes, sBytes []byte, publicKey *ecdsa.PublicKey) bool
3. AES
// package: github.com/ggdream/crypto/aes
// 填充方式(AES并没有64位的块, 如果采用PKCS5, 那么实质上就是采用PKCS7。所以我封装的时候直接让PKCS7函数等上PKCS5函数)
func ZeroPadding(text []byte, blockSize int) []byte
func ZeroUnPadding(text []byte) []byte
func PKCS5Padding(text []byte, blockSize int) []byte
func PKCS5UnPadding(text []byte) []byte
var PKCS7Padding func(text []byte, blockSize int) []byte = PKCS5Padding
var PKCS7UnPadding func(text []byte) []byte = PKCS5UnPadding
// 加密解密(CBC模式。里面使用的填充方式是PKCS5(同时也可以被看做使用的是PKCS7))
func Encrypt(text, key, iv []byte) []byte
func Decrypt(text, key, iv []byte) []byte
4. KEY
// package: github.com/ggdream/crypto/key
// 依于MD5生成秘钥
func Gen16ByMD5() []byte
// 依于随机数生成秘钥
func GenByRand(bits int) []byte
func Gen16ByRand() []byte
func Gen32ByRand() []byte
func Gen64ByRand() []byte
5. HASH
// file: github.com/ggdream/crypto/hashers.go
const (
DefineMD5 = "md5"
DefineSHA1 = "sha1"
DefineSHA224 = "sha224"
DefineSHA256 = "sha256"
DefineSHA384 = "sha384"
DefineSHA512 = "sha512"
DefineSHA3224 = "sha3-224"
DefineSHA3256 = "sha3-256"
DefineSHA3384 = "sha3-384"
DefineSHA3512 = "sha3-512"
)
type Hasher struct
func Hash(algorithm string, data []byte) (string, error)
func (h *Hasher) GetHasher() hash.Hash
func (h *Hasher) ToBytes() ([]byte, error)
func (h *Hasher) ToBase64() (string, error)
func (h *Hasher) ToHex() (string, error)
func FileMD5(file io.Reader) string
6. encode/decode
// file: github.com/ggdream/crypto/coders.go
// Base64编解码
func EnBase64(src []byte) string
func DeBase64(src string) []byte
// 16进制编解码
func EnHex(src []byte) string
func DeHex(src string) []byte
7. byte[]/string
// file: github.com/ggdream/crypto/ptr.go
// to change struct by using ptr.
// byte[]转string
func SliceToString(data []byte) string
// string转byte[]
func StringToSlice(data string) []byte
# Functions
DeBase64 ...
DeHex ...
EnBase64 ...
EnHex ...
FileMD5 Hash the file stream.
Hash define algorithm is md5.
SliceToString ...
StringToSlice ...
# Constants
Predefine hash algorithm tag.
Predefine hash algorithm tag.
Predefine hash algorithm tag.
Predefine hash algorithm tag.
Predefine hash algorithm tag.
Predefine hash algorithm tag.
Predefine hash algorithm tag.
Predefine hash algorithm tag.
Predefine hash algorithm tag.
Predefine hash algorithm tag.