zdpgo_password

package module
v1.1.9 Latest Latest
Warning

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

Go to latest
Published: May 4, 2022 License: MIT Imports: 13 Imported by: 3

README

Golang加密解密框架

超简单的Golang密码加密解密工具

项目地址:https://github.com/zhangdapeng520/zdpgo_password

功能清单

  • 常用HASH加密
  • AES加密解密
  • RSA加密解密
  • ECC加密解密

版本历史

  • v0.1.0 2022/1/1
  • v0.1.1 2022/3/2 AES加密和RSA加密
  • v1.1.0 2022/4/1 ECC加密
  • v1.1.1 2022/4/1 移除第三方依赖
  • v1.1.2 2022/4/1 项目结构优化
  • v1.1.3 2022/4/7 日志组件升级
  • v1.1.4 2022/4/7 AES的GCM加密模式便捷方法
  • v1.1.5 2022/4/9 新增不使用Key的MD5加密和校验方法
  • v1.1.6 2022/4/1 新增URL编码和解码
  • v1.1.7 2022/4/1 新增HEX编码和解码
  • v1.1.8 2022/5/4 新增:文件加密解密
  • v1.1.9 2022/5/4 优化:文件加密解密

基本使用

hash加密
package main

import (
	"fmt"
	"github.com/zhangdapeng520/zdpgo_password"
)

func main() {
	p := zdpgo_password.New(zdpgo_password.PasswordConfig{})

	data := "abc 123 张大鹏"
	fmt.Println(data)

	var (
		result string
		err    error
	)

	// md5加密
	result, err = p.Hash.Md5.EncryptString(data)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)

	// hmac加密
	result, err = p.Hash.Hmac.EncryptString(data)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)

	// sha1加密
	result, err = p.Hash.Sha1.EncryptString(data)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)

	// sha256加密
	result, err = p.Hash.Sha256.EncryptString(data)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)

	// sha512加密
	result, err = p.Hash.Sha512.EncryptString(data)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)
}
AES加密和解密
package main

import (
	"fmt"
	"github.com/zhangdapeng520/zdpgo_password"
)

func main() {
	p := zdpgo_password.New(zdpgo_password.PasswordConfig{})

	data := "abc 123 张大鹏"
	fmt.Println(data)

	var (
		result string
		err    error
	)

	// 默认加密解密
	result, err = p.Aes.EncryptString(data)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)
	result, err = p.Aes.DecryptString(result)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)

	// GCM模式加密解密
	result, err = p.Aes.Gcm.EncryptString(data)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)
	result, err = p.Aes.Gcm.DecryptString(result)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)

	// OFB模式加密解密
	result, err = p.Aes.Ofb.EncryptString(data)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)
	result, err = p.Aes.Ofb.DecryptString(result)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)

	// ECB模式加密解密
	result, err = p.Aes.Ecb.EncryptString(data)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)
	result, err = p.Aes.Ecb.DecryptString(result)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)

	// CFB模式加密解密
	result, err = p.Aes.Cfb.EncryptString(data)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)
	result, err = p.Aes.Cfb.DecryptString(result)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)

	// CTR模式加密解密
	result, err = p.Aes.Ctr.EncryptString(data)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)
	result, err = p.Aes.Ctr.DecryptString(result)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)

	// CBC模式加密解密
	result, err = p.Aes.Cbc.EncryptString(data)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)
	result, err = p.Aes.Cbc.DecryptString(result)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)
}
RSA加密和解密
package main

import (
	"fmt"
	"github.com/zhangdapeng520/zdpgo_password"
)

func main() {
	p := zdpgo_password.New(zdpgo_password.PasswordConfig{})

	data := "abc 123 张大鹏"
	fmt.Println(data)

	var (
		result string
		err    error
	)

	// 默认加密解密
	result, err = p.Rsa.EncryptString(data)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)
	result, err = p.Rsa.DecryptString(result)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)

	// SHA1模式加密解密
	result, err = p.Rsa.Sha1.EncryptString(data)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)
	result, err = p.Rsa.Sha1.DecryptString(result)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)
}

ECC加密和解密

package main

import (
	"fmt"
	"github.com/zhangdapeng520/zdpgo_password"
)

func main() {
	p := zdpgo_password.New(zdpgo_password.PasswordConfig{})

	data := "abc 123 张大鹏"
	fmt.Println(data)

	var (
		result string
		err    error
	)

	// 默认加密解密
	result, err = p.Ecc.EncryptString(data)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)
	result, err = p.Ecc.DecryptString(result)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type DecryptInterface added in v1.1.2

type DecryptInterface interface {
	Decrypt(data []byte) ([]byte, error) // 密码解密
}

DecryptInterface 密码解密接口

type DecryptStringInterface added in v1.1.2

type DecryptStringInterface interface {
	DecryptString(data string) (string, error) // 密码解密
}

DecryptStringInterface 字符串解密接口

type EncryptInterface added in v1.1.2

type EncryptInterface interface {
	Encrypt(data []byte) ([]byte, error) // 密码加密
}

EncryptInterface 密码加密接口

type EncryptStringInterface added in v1.1.2

type EncryptStringInterface interface {
	EncryptString(data string) (string, error) // 密码加密
}

EncryptStringInterface 字符串加密接口

type Password added in v1.1.2

type Password struct {
	Aes  *aes2.Aes   // AES加密核心对象
	Rsa  *rsa2.Rsa   // RSA加密核心对象
	Hash *hash2.Hash // HASH加密核心对象
	Ecc  *ecc.Ecc    // ECC加密核心对象
	Url  *zurl.Url   // URL编码解码核心对象
	Hex  *hex.Hex    // 十六进制编码解码
	// contains filtered or unexported fields
}

Password 密码加密核心对象

func New

func New(config PasswordConfig) *Password

New 创建加密对象

func (*Password) DecryptFile added in v1.1.8

func (p *Password) DecryptFile(filePath string) error

DecryptFile 解密文件

func (*Password) DecryptFileNoChangeName added in v1.1.9

func (p *Password) DecryptFileNoChangeName(filePath string) error

DecryptFileNoChangeName 解密文件且不修改文件名

func (*Password) DecryptFileWithEncryptName added in v1.1.8

func (p *Password) DecryptFileWithEncryptName(encryptFilePath string) error

DecryptFileWithEncryptName 根据加密文件名解密文件

func (*Password) EncryptFile added in v1.1.8

func (p *Password) EncryptFile(filePath string) error

EncryptFile 加密文件

func (*Password) EncryptFileNoChangeName added in v1.1.9

func (p *Password) EncryptFileNoChangeName(filePath string) error

EncryptFileNoChangeName 加密文件且不修改文件名

func (*Password) GetEncryptFileName added in v1.1.9

func (p *Password) GetEncryptFileName(filePath string) (encryptFilePath string, encryptFileName string, err error)

GetEncryptFileName 获取加密文件名 @return decryptFilePath 加密文件路径 @return decryptFileName 加密文件文件名

func (*Password) ReadEncryptFile added in v1.1.9

func (p *Password) ReadEncryptFile(filePath string) (data []byte, err error)

ReadEncryptFile 读取加密文件的内容

type PasswordConfig added in v1.1.2

type PasswordConfig struct {
	Debug       bool            // 是否为debug模式
	LogFilePath string          // 日志路径
	Aes         aes.AesConfig   `yaml:"aes" json:"aes"`   // AES加密核心配置
	Rsa         rsa.RsaConfig   `yaml:"rsa" json:"rsa"`   // RSA加密核心配置
	Hash        hash.HashConfig `yaml:"hash" json:"hash"` // HASH加密核心配置
}

PasswordConfig 密码配置对象

type PasswordInterface added in v1.1.2

type PasswordInterface interface {
	EncryptInterface
	DecryptInterface
}

PasswordInterface 字节数据密码接口

type PasswordStringInterface added in v1.1.2

type PasswordStringInterface interface {
	EncryptStringInterface
	DecryptStringInterface
}

PasswordStringInterface 字符串数据密码接口

Directories

Path Synopsis
core
hex
examples
z01_hash command
z02_aes command
z03_rsa command
z04_ecc command
libs
blake256
Package blake256 implements BLAKE-256 and BLAKE-224 hash functions (SHA-3 candidate).
Package blake256 implements BLAKE-256 and BLAKE-224 hash functions (SHA-3 candidate).
pbkdf2
Package pbkdf2 implements the key derivation function PBKDF2 as defined in RFC 2898 / PKCS #5 v2.0.
Package pbkdf2 implements the key derivation function PBKDF2 as defined in RFC 2898 / PKCS #5 v2.0.

Jump to

Keyboard shortcuts

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