!!😫 。😘😘
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))
}
// 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, error)
func Verify(text, sign []byte, publicKey *rsa.PublicKey) bool
// 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
// 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
// package: github.com/ggdream/crypto/key
// 依于MD5生成秘钥
func Gen16ByMD5() []byte
// 依于随机数生成秘钥
func GenByRand(bits int) []byte
func Gen16ByRand() []byte
func Gen32ByRand() []byte
func Gen64ByRand() []byte
// 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
// 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
// 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