algo

package
v0.0.0-...-b8ba4b7 Latest Latest
Warning

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

Go to latest
Published: May 27, 2020 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Overview

* This file copy from https://github.com/qyxing/ostar/blob/master/codec/rsa_ext.go * It's license same with upstream.

Index

Constants

View Source
const (
	PADDING_ZERO  = 0
	PADDING_PKCS5 = 1
)

Variables

View Source
var (
	ErrDataToLarge     = errors.New("message too long for RSA public key size")
	ErrDataLen         = errors.New("data length error")
	ErrDataBroken      = errors.New("data broken, first byte is not zero")
	ErrKeyPairDismatch = errors.New("data is not encrypted by the private key")
	ErrDecryption      = errors.New("decryption error")
	ErrPublicKey       = errors.New("get public key error")
	ErrPrivateKey      = errors.New("get private key error")
)

Functions

func PKCS5Padding

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

PKCS5 is a subset of PKCS7. Handle the bytes creates and returns a new TripleDES. The key argument should be the TripleDES key, * either 8, 16, or 24 bytes to select TripleDES with 1 key, TripleDES with 2 key, * or TripleDES with 3 key. The length of iv must be the same as the Block's block size. * If an 8 bytes key, and it is the same as DES. * * @param text the TripleDES key * @param iv the iv key * * @return *TripleDES TripleDES instance * @return error Errors encountered

func PKCS7Padding

func PKCS7Padding(buf []byte, blockSize int) (padded []byte)

func UnPKCS5Padding

func UnPKCS5Padding(buf []byte) []byte

func UnZeroPadding

func UnZeroPadding(buf []byte) []byte

func ZeroPadding

func ZeroPadding(buf []byte, blockSize int) []byte

Types

type AES

type AES struct {
	// contains filtered or unexported fields
}

func NewAES

func NewAES(key, iv []byte) (*AES, error)

creates and returns a new AES. The key argument should be the AES key, * either 16, 24, or 32 bytes to select AES-128, AES-192, or AES-256. * The length of iv must be the same as the Block's block size. * * @param key The AES key * @param iv The iv key * * @return *AES AES instance * @return error Errors encountered *

func (*AES) AESInit

func (this *AES) AESInit(key, iv []byte) error

初始化 AES 实例,16, 24, 或 32 字节来选择 AES-128, AES-192, 或 AES-256 * * @param key AES 加解密密钥 * @param iv 16 字节 CBC 初始化向量 * * @return error 遇到的错误 *

func (*AES) CBCDecrypt

func (this *AES) CBCDecrypt(inputBuf []byte, p int) []byte

CBC 解密 * * @param inputBuf 要解密的密文数据 * @param p 数据填充方式 * * @return []byte 解密后的数据 *

func (*AES) CBCDecryptFromBase64String

func (this *AES) CBCDecryptFromBase64String(inputStr string, p int) ([]byte, error)

CBC 解密 base64 格式的密文 * * @param inputBuf 要解密的 base64 编码密文字符 * @param p 数据填充方式 * * @return []byte 解密后的数据 * @return error 解密中出现的错误信息 *

func (*AES) CBCDecryptFromHexString

func (this *AES) CBCDecryptFromHexString(inputStr string, p int) ([]byte, error)

CBC 解密 hex 格式的密文 * * @param inputBuf 要解密的Hex编码密文字符 * @param p 数据填充方式 * * @return []byte 解密后的数据 * @return error 解密中出现的错误信息 *

func (*AES) CBCEncrypt

func (this *AES) CBCEncrypt(inputBuf []byte, p int) []byte

CBC 加密 * * @param inputBuf 要加密的明文数据 * @param p 数据填充方式 * * @return []byte 加密后的数据 *

func (*AES) CBCEncryptToBase64String

func (this *AES) CBCEncryptToBase64String(inputBuf []byte, p int) string

CBC 加密数据并返回 base64 格式的密文 * * @param inputBuf 要加密的数据 * @param p 数据填充方式 * * @return string base64 格式的密文 *

func (*AES) CBCEncryptToHexString

func (this *AES) CBCEncryptToHexString(inputBuf []byte, p int) string

CBC 加密数据并返回 hex 格式的密文 * * @param inputBuf 要加密的数据 * @param p 数据填充方式 * * @return string hex 格式的密文 *

func (*AES) Decrypt

func (this *AES) Decrypt(inputBuf []byte, p int) []byte

解密 * * @param inputBuf 要解密的密文数据 * @param p 数据填充方式 * * @return []byte 解密后的数据 *

func (*AES) DecryptFromBase64String

func (this *AES) DecryptFromBase64String(inputStr string, p int) ([]byte, error)

解密 base64 格式的密文 * * @param inputBuf 要解密的 base64 编码密文字符 * @param p 数据填充方式 * * @return []byte 解密后的数据 * @return error 解密中出现的错误信息 *

func (*AES) DecryptFromHexString

func (this *AES) DecryptFromHexString(inputStr string, p int) ([]byte, error)

解密 hex 格式的密文 * * @param inputBuf 要解密的Hex编码密文字符 * @param p 数据填充方式 * * @return []byte 解密后的数据 * @return error 解密中出现的错误信息 *

func (*AES) Encrypt

func (this *AES) Encrypt(inputBuf []byte, p int) []byte

加密 * * @param inputBuf 要加密的明文数据 * @param p 数据填充方式 * * @return []byte 加密后的数据 *

func (*AES) EncryptToBase64String

func (this *AES) EncryptToBase64String(inputBuf []byte, p int) string

加密数据并返回 base64 格式的密文 * * @param inputBuf 要加密的数据 * @param p 数据填充方式 * * @return string base64 格式的密文 *

func (*AES) EncryptToHexString

func (this *AES) EncryptToHexString(inputBuf []byte, p int) string

加密数据并返回 hex 格式的密文 * * @param inputBuf 要加密的数据 * @param p 数据填充方式 * * @return string hex 格式的密文 *

func (*AES) GetBlock

func (this *AES) GetBlock() cipher.Block

获取 AES 使用的 cipher.Block * * @return cipher.Block AES使用的block *

func (*AES) GetBlockSize

func (this *AES) GetBlockSize() int

获取 AES 加密块长度 * * @return int AES 加密块长度 *

type DES

type DES struct {
	// contains filtered or unexported fields
}

func NewDES

func NewDES(key, iv []byte) (*DES, error)

creates and returns a new DES. The key argument should be the 8 bytes DES key. * The length of iv must be the same as the Block's block size. * * @param key the AES key * @param iv the iv key * * @return *AES AES instance * @return error Errors encountered

func (*DES) CBCDecrypt

func (this *DES) CBCDecrypt(inputBuf []byte, p int) []byte

解密密文 * @param inputBuf 要解密的密文数据 * @param p 数据填充方式 * * @return []byte 明文

func (*DES) CBCDecryptFromBase64String

func (this *DES) CBCDecryptFromBase64String(inputStr string, p int) ([]byte, error)

* 解密密文

  • @param inputStr 要解密的Base64编码密文数据
  • @param p 数据填充方式

func (*DES) CBCDecryptFromHexString

func (this *DES) CBCDecryptFromHexString(inputStr string, p int) ([]byte, error)

* 解密密文

  • @param inputStr 要解密的Hex编码密文数据
  • @param p 数据填充方式

func (*DES) CBCEncrypt

func (this *DES) CBCEncrypt(inputBuf []byte, p int) []byte

* 解密密文

  • @param inputBuf 要解密的密文数据
  • @param p 数据填充方式 *
  • @return []byte 密文

func (*DES) CBCEncryptToBase64String

func (this *DES) CBCEncryptToBase64String(inputBuf []byte, p int) string

* 解密字符密文

  • @param inputBuf 要加密的数据
  • @param p 数据填充方式

func (*DES) CBCEncryptToHexString

func (this *DES) CBCEncryptToHexString(inputBuf []byte, p int) string

* 解密字符密文

  • @param inputBuf 要加密的数据
  • @param p 数据填充方式

func (*DES) DESInit

func (this *DES) DESInit(key, iv []byte) error

初始化 DES 实例,密钥必须 16 字节 * * @param key DES 加解密密钥 * @param iv 8 字节 CBC 初始化向量 * * @return error 遇到的错误 *

func (*DES) Decrypt

func (this *DES) Decrypt(inputBuf []byte, p int) []byte

解密密文 * @param inputBuf 要解密的密文数据 * @param p 数据填充方式 * * @return []byte 明文

func (*DES) DecryptFromBase64String

func (this *DES) DecryptFromBase64String(inputStr string, p int) ([]byte, error)

* 解密密文

  • @param inputStr 要解密的Base64编码密文字符
  • @param p 数据填充方式

func (*DES) DecryptFromHexString

func (this *DES) DecryptFromHexString(inputStr string, p int) ([]byte, error)

* 解密密文

  • @param inputStr 要解密的Hex编码密文字符
  • @param p 数据填充方式

func (*DES) Encrypt

func (this *DES) Encrypt(inputBuf []byte, p int) []byte

加密明文 * @param inputBuf 要加密的明文数据 * @param p 数据填充方式 * * @return []byte 明文

func (*DES) EncryptToBase64String

func (this *DES) EncryptToBase64String(inputBuf []byte, p int) string

* 解密字符密文

  • @param inputBuf 要加密的数据
  • @param p 数据填充方式

func (*DES) EncryptToHexString

func (this *DES) EncryptToHexString(inputBuf []byte, p int) string

* 解密字符密文

  • @param inputBuf 要加密的数据
  • @param p 数据填充方式

func (*DES) GetBlock

func (this *DES) GetBlock() cipher.Block

获取 AES 使用的 cipher.Block * * @return cipher.Block AES使用的block *

func (*DES) GetBlockSize

func (this *DES) GetBlockSize() int

获取 DES 加密块长度 * * @return int DES 加密块长度 *

type HMac

type HMac struct {
	Key string
}

func NewHMac

func NewHMac() *HMac

func (*HMac) Md5

func (this *HMac) Md5(text string) string

func (*HMac) Sha256

func (this *HMac) Sha256(text string) string

func (*HMac) Sha512

func (this *HMac) Sha512(text string) string

type RSA

type RSA struct {
	PublicKeyBytes  []byte
	PrivateKeyBytes []byte
	// contains filtered or unexported fields
}

func NewRSA

func NewRSA() *RSA

func (*RSA) GenerateKeyWithBits

func (this *RSA) GenerateKeyWithBits(bits int) ([]byte, []byte, error)

func (*RSA) GeneratePrivateKey

func (this *RSA) GeneratePrivateKey(bits int) ([]byte, error)

func (*RSA) GeneratePublicKey

func (this *RSA) GeneratePublicKey() ([]byte, error)

func (*RSA) ParsePKCS1PrivateKey

func (this *RSA) ParsePKCS1PrivateKey() error

func (*RSA) ParsePKCS1PublicKey

func (this *RSA) ParsePKCS1PublicKey() error

func (*RSA) PrivateKeyDecrypt

func (this *RSA) PrivateKeyDecrypt(cipher string) ([]byte, error)

私钥解密

func (*RSA) PublicKeyEncrypt

func (this *RSA) PublicKeyEncrypt(buf []byte) (string, error)

公钥加密

func (*RSA) Sign

func (this *RSA) Sign(src []byte, hash crypto.Hash) (string, error)

签名

type Sha

type Sha struct{}

func NewSha

func NewSha() *Sha

func (*Sha) Md5

func (this *Sha) Md5(buf []byte) []byte

md5

func (*Sha) Md5ToBase64String

func (this *Sha) Md5ToBase64String(text string) string

func (*Sha) Md5ToHexString

func (this *Sha) Md5ToHexString(text string) string

func (*Sha) Sha1

func (this *Sha) Sha1(buf []byte) []byte

sha1

func (*Sha) Sha1ToBase64String

func (this *Sha) Sha1ToBase64String(text string) string

func (*Sha) Sha1ToHexString

func (this *Sha) Sha1ToHexString(text string) string

func (*Sha) Sha256

func (this *Sha) Sha256(buf []byte) []byte

sha256

func (*Sha) Sha256ToBase64String

func (this *Sha) Sha256ToBase64String(text string) string

func (*Sha) Sha256ToHexString

func (this *Sha) Sha256ToHexString(text string) string

func (*Sha) Sha512

func (this *Sha) Sha512(buf []byte) []byte

sha512

func (*Sha) Sha512ToBase64String

func (this *Sha) Sha512ToBase64String(text string) string

func (*Sha) Sha512ToHexString

func (this *Sha) Sha512ToHexString(text string) string

type TripleDES

type TripleDES struct {
	// contains filtered or unexported fields
}

func NewTripleDES

func NewTripleDES(key, iv []byte) (*TripleDES, error)

creates and returns a new TripleDES. The key argument should be the TripleDES key, * either 8, 16, or 24 bytes to select TripleDES with 1 key, TripleDES with 2 key, * or TripleDES with 3 key. The length of iv must be the same as the Block's block size. * If an 8 bytes key, and it is the same as DES. * * @param key the TripleDES key * @param iv the iv key * * @return *TripleDES TripleDES instance * @return error Errors encountered

func (*TripleDES) CBCDecrypt

func (this *TripleDES) CBCDecrypt(inputBuf []byte, p int) []byte

解密密文 * @param inputBuf 要解密的密文数据 * @param p 数据填充方式 * * @return []byte 明文

func (*TripleDES) CBCDecryptFromBase64String

func (this *TripleDES) CBCDecryptFromBase64String(inputStr string, p int) ([]byte, error)

* 解密密文

  • @param inputStr 要解密的Base64编码密文数据
  • @param p 数据填充方式

func (*TripleDES) CBCDecryptFromHexString

func (this *TripleDES) CBCDecryptFromHexString(inputStr string, p int) ([]byte, error)

* 解密密文

  • @param inputStr 要解密的Hex编码密文数据
  • @param p 数据填充方式

func (*TripleDES) CBCEncrypt

func (this *TripleDES) CBCEncrypt(inputBuf []byte, p int) []byte

* 解密密文

  • @param inputBuf 要解密的密文数据
  • @param p 数据填充方式 *
  • @return []byte 密文

func (*TripleDES) CBCEncryptToBase64String

func (this *TripleDES) CBCEncryptToBase64String(inputBuf []byte, p int) string

* 解密字符密文

  • @param inputBuf 要加密的数据
  • @param p 数据填充方式

func (*TripleDES) CBCEncryptToHexString

func (this *TripleDES) CBCEncryptToHexString(inputBuf []byte, p int) string

* 解密字符密文

  • @param inputBuf 要加密的数据
  • @param p 数据填充方式

func (*TripleDES) Decrypt

func (this *TripleDES) Decrypt(inputBuf []byte, p int) []byte

解密密文 * @param inputBuf 要解密的密文数据 * @param p 数据填充方式 * * @return []byte 明文

func (*TripleDES) DecryptFromBase64String

func (this *TripleDES) DecryptFromBase64String(inputStr string, p int) ([]byte, error)

* 解密密文

  • @param inputStr 要解密的Base64编码密文字符
  • @param p 数据填充方式

func (*TripleDES) DecryptFromHexString

func (this *TripleDES) DecryptFromHexString(inputStr string, p int) ([]byte, error)

* 解密密文

  • @param inputStr 要解密的Hex编码密文字符
  • @param p 数据填充方式

func (*TripleDES) Encrypt

func (this *TripleDES) Encrypt(inputBuf []byte, p int) []byte

加密明文 * @param inputBuf 要加密的明文数据 * @param p 数据填充方式 * * @return []byte 明文

func (*TripleDES) EncryptToBase64String

func (this *TripleDES) EncryptToBase64String(inputBuf []byte, p int) string

* 解密字符密文

  • @param inputBuf 要加密的数据
  • @param p 数据填充方式

func (*TripleDES) EncryptToHexString

func (this *TripleDES) EncryptToHexString(inputBuf []byte, p int) string

* 解密字符密文

  • @param inputBuf 要加密的数据
  • @param p 数据填充方式

func (*TripleDES) GetBlock

func (this *TripleDES) GetBlock() cipher.Block

获取 TripleDES 使用的 cipher.Block * * @return cipher.Block TripleDES使用的block *

func (*TripleDES) GetBlockSize

func (this *TripleDES) GetBlockSize() int

获取 TripleDES 加密块长度 * * @return int TripleDES 加密块长度 *

func (*TripleDES) TripleDESInit

func (this *TripleDES) TripleDESInit(key, iv []byte) error

初始化 AES 实例,16, 24, 或 32 字节来选择 AES-128, AES-192, 或 AES-256 * * @param key AES 加解密密钥 * @param iv 16 字节 CBC 初始化向量 * * @return error 遇到的错误 *

Jump to

Keyboard shortcuts

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