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)
}
}
# 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 大写字母.