kmgCrypto

package
v0.0.0-...-05317bf Latest Latest
Warning

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

Go to latest
Published: Nov 21, 2015 License: MIT Imports: 31 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInputSize           = errors.New("input size too large")
	ErrEncryption          = errors.New("encryption error")
	ErrDecryption          = errors.New("decryption error")
	ErrNotRsaTypePublicKey = errors.New("public key is not rsa type.")
)
View Source
var DefaultPsk = [64]byte{0xe9, 0xf6, 0x6c, 0x4f, 0xa4, 0xee, 0x88, 0xc8}

这个作为当前应用的一个psk,而进行使用,开新项目的时候建议重新生成一个psk.

View Source
var ErrDecryptedDataTooSmall = fmt.Errorf("encrypted data too small")
View Source
var GenUUIDErrors = errors.New("gen uuid fail")

@deprecated

Functions

func AesCbcPKCS7PaddingDecrypt

func AesCbcPKCS7PaddingDecrypt(in, key []byte) (out []byte, err error)

key must be 32 bytes, if it is not 32 byte,it will panic. only repeat error because of input data

func AesCbcPKCS7PaddingEncrypt

func AesCbcPKCS7PaddingEncrypt(in, key []byte) (out []byte)

key must be 32 bytes, if it is not 32 byte,it will panic 警告: 这个加密没有hash认证 0-16: iv 16-32: data

func CheckAdler32

func CheckAdler32(message, messageMAC []byte) bool

长度4字节 速度非常快 1GB/s

func CheckAdler32Mac

func CheckAdler32Mac(message, messageMAC, key []byte) bool

长度4字节 速度非常快 1GB/s

func CheckSha256MAC

func CheckSha256MAC(message, messageMAC, key []byte) bool

长度32字节

func CompressAndEncryptBase64Decode

func CompressAndEncryptBase64Decode(key *[32]byte, data string) (output []byte, err error)

func CompressAndEncryptBase64Encode

func CompressAndEncryptBase64Encode(key *[32]byte, data []byte) (output string)

func CompressAndEncryptBytesDecode

func CompressAndEncryptBytesDecode(key *[32]byte, data []byte) (output []byte, err error)

对称解密,

不会修改输入的数据

func CompressAndEncryptBytesDecodeV2

func CompressAndEncryptBytesDecodeV2(key *[32]byte, data []byte) (output []byte, err error)

对称解密,

不会修改输入的数据

func CompressAndEncryptBytesEncode

func CompressAndEncryptBytesEncode(key *[32]byte, data []byte) (output []byte)

先压缩,后加密, 对称加密,正确包含psk的所有功能, 不管是否可以压缩.保证最多会比明文数据增加58个字节.

func CompressAndEncryptBytesEncodeV2

func CompressAndEncryptBytesEncodeV2(key *[32]byte, data []byte) (output []byte)

先压缩,后加密, 对称加密,正确包含psk的所有功能, 让Aes加密和magicCode进行传输错误验证. 压缩网络包时,效果不明显,劣化也不明显,大部分包都无法压缩,一般仅有3%左右的包可以压缩. AES-CTR magicCode完整性验证 zlib压缩(1字节最坏情况控制) 最坏情况多21个字节

func CreateSelfCert

func CreateSelfCert() (*tls.Certificate, error)

unity 3d can use ncat cert,but can not use this!!! openssl verify fail!!!

func CreateTlsConfig

func CreateTlsConfig() (*tls.Config, error)

func Decrypt

func Decrypt(key []byte, data []byte) (output []byte, err error)

对称解密,

不会修改输入的数据
@deprecated

func DecryptString

func DecryptString(key string, data string) (output []byte, err error)

@deprecated

func DecryptV2

func DecryptV2(key []byte, data []byte) (output []byte, err error)

对称解密,

不会修改输入的数据

func DecryptV3

func DecryptV3(key *[32]byte, data []byte) (output []byte, err error)

对称解密,

不会修改输入的数据

func Encrypt

func Encrypt(key []byte, data []byte) (output []byte, err error)

对称加密, 安全性没有这么简单

key为任意长度,使用简单
data为任意长度,使用简单
使用aes,cbc,32位密码
输入密码hash使用sha384
数据padding使用PKCS5Padding
不会修改输入的数据
@deprecated

func EncryptString

func EncryptString(key string, data []byte) (output string, err error)

@deprecated

func EncryptV2

func EncryptV2(key []byte, data []byte) (output []byte)

对称加密,正确包含psk的所有功能,不考虑性能

key为任意长度
data为任意长度
会在原文的最后面加上原文的sha512的内容,并且加密
使用随机化iv
使用aes,cbc,32位密码
输入密码hash使用sha384
数据padding使用PKCS5Padding
不会修改输入的数据

func EncryptV3

func EncryptV3(key *[32]byte, data []byte) (output []byte)

只加密,不压缩 对称加密,正确包含psk的所有功能, 让Aes加密和magicCode进行传输错误验证. AES-CTR magicCode完整性验证 最坏情况多20个字节

func GenUUID

func GenUUID() (string, error)

@deprecated

func Get32PskFromString

func Get32PskFromString(s string) *[32]byte

func GetAdler32

func GetAdler32(message []byte) []byte

func GetAdler32Mac

func GetAdler32Mac(message, key []byte) []byte

func GetPskFromDefaultPsk

func GetPskFromDefaultPsk(length int, name string) []byte

长度需要小于64

func GetSha256MAC

func GetSha256MAC(message, key []byte) []byte

速度比较慢 118MB/s

func GetTlsTestServerConfig

func GetTlsTestServerConfig() *tls.Config

func Md5Byte

func Md5Byte(data []byte) []byte

func Md5Hex

func Md5Hex(data []byte) string

小写hex

func Md5HexFromString

func Md5HexFromString(data string) string

小写hex

func MustGenUUID

func MustGenUUID() string

@deprecated

func MustMd5File

func MustMd5File(path string) string

获得文件的MD5值

func MustTlsTestListen

func MustTlsTestListen(addr string) (listener net.Listener)

开启一个tls服务器监听,证书在上面是自签名的. 目标: 使各种客户端都可以兼容使用 这个服务器不是安全的,1.本项目开源,2.所以上面的证书也是到处都可以取到的. 有下列两个用处 1.想用ssl,不管安全性 2.只是测试代码正确性

func PKCS7Padding

func PKCS7Padding(data []byte) []byte

func PemAddStartEnd

func PemAddStartEnd(in string) []byte

有时候会得到一个没有头没有尾的publicKey,使用这个函数加上 -----BEGIN PUBLIC KEY----- -----END PUBLIC KEY-----

func RegisterPskChangeCallback

func RegisterPskChangeCallback(f func())

func RsaEncrypt

func RsaEncrypt(c *big.Int, pub *rsa.PublicKey, m *big.Int) *big.Int

func RsaOpensslSign

func RsaOpensslSign(pub *rsa.PrivateKey, h crypto.Hash, msg []byte) (s []byte, err error)

func RsaOpensslVerify

func RsaOpensslVerify(pub *rsa.PublicKey, h crypto.Hash, msg []byte, sig []byte) (err error)

这个接口应该和php版的openssl_verify在使用rsa公钥的时候有完全相同的输入输出,加密的坑简直太多了.. msg是需要验证签名的消息,sig是签名之后生成的

func RsaParseOpensslPrivateKey

func RsaParseOpensslPrivateKey(b []byte) (key *rsa.PrivateKey, err error)

func RsaParseOpensslPublicKey

func RsaParseOpensslPublicKey(b []byte) (pub *rsa.PublicKey, err error)

func RsaPrivateEncryptPKCS1v15

func RsaPrivateEncryptPKCS1v15(priv *rsa.PrivateKey, data []byte) (enc []byte, err error)

func RsaPublicDecryptPKCS1v15

func RsaPublicDecryptPKCS1v15(pub *rsa.PublicKey, enc []byte) (data []byte, err error)

使用和rsa.SignPKCS1v15相同的算法,但是返回解密后的数据

func RsaWithSha1PKCS1OpensslSignBase64

func RsaWithSha1PKCS1OpensslSignBase64(PKCS1privateKey []byte, msg []byte) (s string, err error)

支付宝签名的默认方式, 放在这里主要用于文档该功能如何实现, 并且提供一种签名的方式 读入 PKCS1格式私钥字符串 , 需要签名的数据 返回 签名后的数据

func SelfCertHttpListenAndServe

func SelfCertHttpListenAndServe(addr string, handler http.Handler) error

func SetDefaultPskFromString

func SetDefaultPskFromString(s string)

可以在新项目开头注册一次. example:

kmgCrypto.SetDefaultPskFromString("4tLW/1FvSbwgc/mOrdtMSzcSYx7WWtI1Nn2uBJ5e/FXnW8XcPp9L45p/ahInsadGVF8Xsol1SnX4\nunlWzqAOUg==\n")

use python -c 'import os;print os.urandom(64).encode("base64")' to get a new psk.

func Sha256Hex

func Sha256Hex(data []byte) string

func Sha512Hex

func Sha512Hex(data []byte) string

func Sha512HexFromString

func Sha512HexFromString(data string) string

func UnPKCS7Padding

func UnPKCS7Padding(data []byte) []byte

func XorBytes

func XorBytes(dst, a, b []byte) int

xorBytes xors the bytes in a and b. The destination is assumed to have enough space. Returns the number of bytes xor'd.

func XorWords

func XorWords(dst, a, b []byte)

Types

This section is empty.

Jump to

Keyboard shortcuts

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