Documentation ¶
Index ¶
- Variables
- func AesCbcPKCS7PaddingDecrypt(in, key []byte) (out []byte, err error)
- func AesCbcPKCS7PaddingEncrypt(in, key []byte) (out []byte)
- func CheckAdler32(message, messageMAC []byte) bool
- func CheckAdler32Mac(message, messageMAC, key []byte) bool
- func CheckSha256MAC(message, messageMAC, key []byte) bool
- func CompressAndEncryptBase64Decode(key *[32]byte, data string) (output []byte, err error)
- func CompressAndEncryptBase64Encode(key *[32]byte, data []byte) (output string)
- func CompressAndEncryptBytesDecode(key *[32]byte, data []byte) (output []byte, err error)
- func CompressAndEncryptBytesDecodeV2(key *[32]byte, data []byte) (output []byte, err error)
- func CompressAndEncryptBytesEncode(key *[32]byte, data []byte) (output []byte)
- func CompressAndEncryptBytesEncodeV2(key *[32]byte, data []byte) (output []byte)
- func CreateSelfCert() (*tls.Certificate, error)
- func CreateTlsConfig() (*tls.Config, error)
- func Decrypt(key []byte, data []byte) (output []byte, err error)
- func DecryptString(key string, data string) (output []byte, err error)
- func DecryptV2(key []byte, data []byte) (output []byte, err error)
- func DecryptV3(key *[32]byte, data []byte) (output []byte, err error)
- func Encrypt(key []byte, data []byte) (output []byte, err error)
- func EncryptString(key string, data []byte) (output string, err error)
- func EncryptV2(key []byte, data []byte) (output []byte)
- func EncryptV3(key *[32]byte, data []byte) (output []byte)
- func GenUUID() (string, error)
- func Get32PskFromString(s string) *[32]byte
- func GetAdler32(message []byte) []byte
- func GetAdler32Mac(message, key []byte) []byte
- func GetPskFromDefaultPsk(length int, name string) []byte
- func GetSha256MAC(message, key []byte) []byte
- func GetTlsTestServerConfig() *tls.Config
- func Md5Byte(data []byte) []byte
- func Md5Hex(data []byte) string
- func Md5HexFromString(data string) string
- func MustGenUUID() string
- func MustMd5File(path string) string
- func MustTlsTestListen(addr string) (listener net.Listener)
- func PKCS7Padding(data []byte) []byte
- func PemAddStartEnd(in string) []byte
- func RegisterPskChangeCallback(f func())
- func RsaEncrypt(c *big.Int, pub *rsa.PublicKey, m *big.Int) *big.Int
- func RsaOpensslSign(pub *rsa.PrivateKey, h crypto.Hash, msg []byte) (s []byte, err error)
- func RsaOpensslVerify(pub *rsa.PublicKey, h crypto.Hash, msg []byte, sig []byte) (err error)
- func RsaParseOpensslPrivateKey(b []byte) (key *rsa.PrivateKey, err error)
- func RsaParseOpensslPublicKey(b []byte) (pub *rsa.PublicKey, err error)
- func RsaPrivateEncryptPKCS1v15(priv *rsa.PrivateKey, data []byte) (enc []byte, err error)
- func RsaPublicDecryptPKCS1v15(pub *rsa.PublicKey, enc []byte) (data []byte, err error)
- func RsaWithSha1PKCS1OpensslSignBase64(PKCS1privateKey []byte, msg []byte) (s string, err error)
- func SelfCertHttpListenAndServe(addr string, handler http.Handler) error
- func SetDefaultPskFromString(s string)
- func Sha256Hex(data []byte) string
- func Sha512Hex(data []byte) string
- func Sha512HexFromString(data string) string
- func UnPKCS7Padding(data []byte) []byte
- func XorBytes(dst, a, b []byte) int
- func XorWords(dst, a, b []byte)
Constants ¶
This section is empty.
Variables ¶
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.") )
var DefaultPsk = [64]byte{0xe9, 0xf6, 0x6c, 0x4f, 0xa4, 0xee, 0x88, 0xc8}
这个作为当前应用的一个psk,而进行使用,开新项目的时候建议重新生成一个psk.
var ErrDecryptedDataTooSmall = fmt.Errorf("encrypted data too small")
var GenUUIDErrors = errors.New("gen uuid fail")
@deprecated
Functions ¶
func AesCbcPKCS7PaddingDecrypt ¶
key must be 32 bytes, if it is not 32 byte,it will panic. only repeat error because of input data
func AesCbcPKCS7PaddingEncrypt ¶
key must be 32 bytes, if it is not 32 byte,it will panic 警告: 这个加密没有hash认证 0-16: iv 16-32: data
func CompressAndEncryptBytesEncode ¶
先压缩,后加密, 对称加密,正确包含psk的所有功能, 不管是否可以压缩.保证最多会比明文数据增加58个字节.
func CompressAndEncryptBytesEncodeV2 ¶
先压缩,后加密, 对称加密,正确包含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 DecryptString ¶
@deprecated
func Encrypt ¶
对称加密, 安全性没有这么简单
key为任意长度,使用简单 data为任意长度,使用简单 使用aes,cbc,32位密码 输入密码hash使用sha384 数据padding使用PKCS5Padding 不会修改输入的数据 @deprecated
func EncryptString ¶
@deprecated
func EncryptV2 ¶
对称加密,正确包含psk的所有功能,不考虑性能
key为任意长度 data为任意长度 会在原文的最后面加上原文的sha512的内容,并且加密 使用随机化iv 使用aes,cbc,32位密码 输入密码hash使用sha384 数据padding使用PKCS5Padding 不会修改输入的数据
func EncryptV3 ¶
只加密,不压缩 对称加密,正确包含psk的所有功能, 让Aes加密和magicCode进行传输错误验证. AES-CTR magicCode完整性验证 最坏情况多20个字节
func Get32PskFromString ¶
func GetAdler32 ¶
func GetAdler32Mac ¶
func GetTlsTestServerConfig ¶
func MustTlsTestListen ¶
开启一个tls服务器监听,证书在上面是自签名的. 目标: 使各种客户端都可以兼容使用 这个服务器不是安全的,1.本项目开源,2.所以上面的证书也是到处都可以取到的. 有下列两个用处 1.想用ssl,不管安全性 2.只是测试代码正确性
func PKCS7Padding ¶
func PemAddStartEnd ¶
有时候会得到一个没有头没有尾的publicKey,使用这个函数加上 -----BEGIN PUBLIC KEY----- -----END PUBLIC KEY-----
func RegisterPskChangeCallback ¶
func RegisterPskChangeCallback(f func())
func RsaOpensslSign ¶
func RsaOpensslVerify ¶
这个接口应该和php版的openssl_verify在使用rsa公钥的时候有完全相同的输入输出,加密的坑简直太多了.. msg是需要验证签名的消息,sig是签名之后生成的
func RsaParseOpensslPrivateKey ¶
func RsaParseOpensslPrivateKey(b []byte) (key *rsa.PrivateKey, err error)
func RsaPrivateEncryptPKCS1v15 ¶
func RsaPrivateEncryptPKCS1v15(priv *rsa.PrivateKey, data []byte) (enc []byte, err error)
func RsaPublicDecryptPKCS1v15 ¶
使用和rsa.SignPKCS1v15相同的算法,但是返回解密后的数据
func RsaWithSha1PKCS1OpensslSignBase64 ¶
支付宝签名的默认方式, 放在这里主要用于文档该功能如何实现, 并且提供一种签名的方式 读入 PKCS1格式私钥字符串 , 需要签名的数据 返回 签名后的数据
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 Sha512HexFromString ¶
func UnPKCS7Padding ¶
Types ¶
This section is empty.