crypto

package
v1.0.3 Latest Latest
Warning

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

Go to latest
Published: Feb 2, 2021 License: MIT Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AesDecrypt

func AesDecrypt(decodeStr, key, iv string) (string, error)

AesDecrypt CBC解密key iv必须是16位 对应php 解密方式 当key 16位的时候 相当于php openssl_decrypt(base64_decode($strEncode), 'aes-128-cbc', $key, true, $iv) 当key 24位的时候 相当于php openssl_decrypt(base64_decode($strEncode), 'aes-192-cbc', $key, true, $iv) 当key 32位的时候 相当于php openssl_decrypt(base64_decode($strEncode), 'aes-256-cbc', $key, true, $iv)

func AesEncrypt

func AesEncrypt(encodeStr, key string, iv string) (string, error)

* 概念 CBC(密文分组链接方式)有向量的概念, 它的实现机制使加密的各段数据之间有了联系。 加密步骤:

首先将数据按照8个字节一组进行分组得到D1D2......Dn(若数据不是8的整数倍,用指定的PADDING数据补位)
第一组数据D1与初始化向量I异或后的结果进行DES加密得到第一组密文C1(初始化向量I为全零)
第二组数据D2与第一组的加密结果C1异或以后的结果进行DES加密,得到第二组密文C2
之后的数据以此类推,得到Cn
按顺序连为C1C2C3......Cn即为加密结果。

解密是加密的逆过程:

首先将数据按照8个字节一组进行分组得到C1C2C3......Cn
将第一组数据进行解密后与初始化向量I进行异或得到第一组明文D1(注意:一定是先解密再异或)
将第二组数据C2进行解密后与第一组密文数据进行异或得到第二组数据D2
之后依此类推,得到Dn
按顺序连为D1D2D3......Dn即为解密结果。

特点

不容易主动攻击,安全性好于ECB,适合传输长度长的报文,是SSL、IPSec的标准。
每个密文块依赖于所有的信息明文消息中一个改变会影响所有密文块
发送方和接收方都需要知道初始化向量
加密过程是串行的,无法被并行化(在解密时,从两个邻接的密文块中即可得到一个平文块。因此,解密过程可以被并行化

AesEncrypt CBC加密 key iv必须是16位 当key 16位的时候 相当于php base64_encode(openssl_encrypt($str, 'aes-128-cbc', $key, true, $iv)); 当key 24位的时候 相当于php base64_encode(openssl_encrypt($str, 'aes-192-cbc', $key, true, $iv)); 当key 32位的时候 相当于php base64_encode(openssl_encrypt($str, 'aes-256-cbc', $key, true, $iv));

func DecryptEcb

func DecryptEcb(src, key string) (string, error)

DecryptEcb ECB解密 key必须是8位

func EncryptEcb

func EncryptEcb(src, key string) (string, error)

EncryptEcb ECB加密

func GetIteratorStr

func GetIteratorStr(length int) string

GetIteratorStr 得到指定16进制的数字

func Hmac256

func Hmac256(data, key string) string

Hmac256 hmac256算法

func HmacSha1

func HmacSha1(str string, key string) string

HmacSha1 实现php hmac_sha1

func Md5

func Md5(str string) string

Md5 md5 string

func PKCS5Padding

func PKCS5Padding(ciphertext []byte, blockSize int) []byte

PKCS5Padding 明文补码算法

func PKCS5UnPadding

func PKCS5UnPadding(origData []byte) []byte

PKCS5UnPadding 明文减码算法

func Sha1

func Sha1(s string) string

Sha1 sha1 string

func Sha1File

func Sha1File(fName string) (string, error)

Sha1File sha1 file

func Sha256

func Sha256(s string) string

Sha256 sha256得到的值是一个固定值

Types

This section is empty.

Jump to

Keyboard shortcuts

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