package
0.0.0-20200310085232-3db7acb8db78
Repository: https://github.com/freshcyber/contrib.git
Documentation: pkg.go.dev

# README

crypto

DES,3DES,Aes使用方法:

  • DES,3DES,Aes

package main

import (
	"encoding/base64"
	"fmt"
	"github.com/Eric-GreenComb/contrib/crypto"
)

func main() {
	// DES 加解密
	testDes()
	// 3DES加解密
	test3Des()

	testAes()
}

func testDes() {
	key := []byte("sfe023f_")
	result, err := crypto.DesEncrypt([]byte("polaris@studygolang"), key)
	if err != nil {
		panic(err)
	}
	fmt.Println(base64.StdEncoding.EncodeToString(result))
	origData, err := crypto.DesDecrypt(result, key)
	if err != nil {
		panic(err)
	}
	fmt.Println(string(origData))
}

func test3Des() {
	key := []byte("sfe023f_sefiel#fi32lf3e!")
	result, err := crypto.TripleDesEncrypt([]byte("polaris@studygolang"), key)
	if err != nil {
		panic(err)
	}
	fmt.Println(base64.StdEncoding.EncodeToString(result))
	origData, err := crypto.TripleDesDecrypt(result, key)
	if err != nil {
		panic(err)
	}
	fmt.Println(string(origData))
}

func testAes() {
	// AES-128。key长度:16, 24, 32 bytes 对应 AES-128, AES-192, AES-256
	key := []byte("sfe023f_9fd&fwflsfe023f_9fd&fwfl")
	// key := []byte("sfe023f_9fd&fwfl")
	result, err := crypto.AesEncrypt([]byte("polaris@studygolang"), key)
	if err != nil {
		panic(err)
	}
	fmt.Println(base64.StdEncoding.EncodeToString(result))
	origData, err := crypto.AesDecrypt(result, key)
	if err != nil {
		panic(err)
	}
	fmt.Println(string(origData))
}

RSA使用方法:

  • 生成RSA公私钥文件

package main

import (
	"github.com/banerwai/gommon/crypto"
	"log"
)

func main() {
	var bits int
	bits = 2048
	if err := crypto.RsaGenKey(bits); err != nil {
		log.Fatal("密钥文件生成失败!")
	}
	log.Println("密钥文件生成成功!")
}

  • RsaEncrypt 公钥加密
  • RsaDecrypt 私钥解密

package main

import (
	"fmt"
	"github.com/banerwai/gommon/crypto"
	"io/ioutil"
	"os"
	"time"
)

func main() {

	initData := "abcdefghij_klmnopq_"
	init := []byte(initData)

	data, err := crypto.RsaEncrypt(init, publicKey)
	if err != nil {
		panic(err)
	}
	pre := time.Now()
	origData, err := crypto.RsaDecrypt(data, privateKey)
	if err != nil {
		panic(err)
	}
	now := time.Now()
	fmt.Println(now.Sub(pre))
	fmt.Println(string(origData))

}

var decrypted string
var privateKey, publicKey []byte

func init() {
	var err error
	// flag.StringVar(&decrypted, "d", "", "加密过的数据")
	// flag.Parse()
	publicKey, err = ioutil.ReadFile("public.pem")
	if err != nil {
		os.Exit(-1)
	}
	privateKey, err = ioutil.ReadFile("private.pem")
	if err != nil {
		os.Exit(-1)
	}
}


  • RsaSign,RsaVerify

package main

import (
	"crypto"
	"crypto/md5"
	"fmt"
	banerwaicrypto "github.com/banerwai/gommon/crypto"
	"io/ioutil"
	"os"
)

func main() {

	initData := "abcdefghijklmnopq"
	init := []byte(initData)
	hashed := md5.Sum(init)
	_sign, err := banerwaicrypto.RsaSign(crypto.MD5, hashed[:], privateKey)

	init1 := []byte("abcdefghijklmnopq")
	hashed1 := md5.Sum(init1)

	err = banerwaicrypto.RsaVerify(crypto.MD5, hashed1[:], publicKey, _sign)
	if err != nil {
		fmt.Println(err.Error())
	} else {
		fmt.Println("Sign is right")
	}

}

var decrypted string
var privateKey, publicKey []byte

func init() {
	var err error
	// flag.StringVar(&decrypted, "d", "", "加密过的数据")
	// flag.Parse()
	publicKey, err = ioutil.ReadFile("public.pem")
	if err != nil {
		os.Exit(-1)
	}
	privateKey, err = ioutil.ReadFile("private.pem")
	if err != nil {
		os.Exit(-1)
	}
}


# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Functions

AesDecrypt decrypt aes 2 []byte.
AesEncrypt encrypt aes 2 []byte.
BanerwaiAPIV1CheckSign banerwai api sign check.
BanerwaiAPIV1GenSign banerwai api gen sign.
Base64Decode base64 decode 2 []byte.
Base64Encode base64 encode 2 []byte.
CompareDoubleMd5 compare double md5 value.
CompareHash compares bcrypt password with a plaintext one.
CompareHS256Hex compare HS256Hex value.
CompareHS512Hex compare HS512Hex value.
CompareMd5 compare md5 value.
CompareSHA256Hex compare sha256 value.
CompareSHA512Hex compare sha512 value.
DecodeBase64 base64 decode 2 string.
DecryptAes decrypt by aes.
DecryptAesString decrypt aes 2 string.
DesDecrypt des decrypt 2 []byte.
DesEncrypt des encrypt 2 []byte.
DoubleMd5 double md5 encrypt 2 string.
EncodeBase64 base64 encode 2 string.
EncryptAes encrypt by aes.
EncryptAesString encrypt aes 2 string.
GenerateHash generates bcrypt hash from plaintext password.
GetRandomItNum 返回输入参数以下的随机数字,如输入参数为5,随机返回0,1,2,3,4.
GetRandomString 生成随机字符串.
HS256Base64 hs256 in string/out base64.
HS256Byte hs256 byte in/out.
HS256Hex hs256 in string /out hex.
HS512Base64 hs512 in string/out base64.
HS512Byte hs512 byte in/out.
HS512Hex hs512 in string /out hex.
Krand 随机字符串.
Md5 md5 encrypt 2 string.
PKCS5Padding des PKCS5Padding.
PKCS5UnPadding des PKCS5UnPadding.
RandomPwd 随机密码 num 几位.
SHA256Base64 sha256 in string/out base64.
SHA256Byte sha256 byte in/out.
SHA256Hex sha256 in string /out hex.
SHA512Base64 sha512 in string/out base64.
SHA512Byte sha512 byte in/out.
SHA512Hex sha512 in string /out hex.
TripleDesDecrypt 3DES解密.
TripleDesEncrypt 3DES加密.
ZeroPadding des zeropadding.
ZeroUnPadding des zerounpadding.

# Constants

KcRandKindAll 数字、大小写字母.
KcRandKindLower 小写字母.
KcRandKindNum 纯数字.
KcRandKindUpper 大写字母.