zdpgo_password

package module
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Apr 1, 2022 License: MIT Imports: 29 Imported by: 3

README

zdpgo_password

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

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

版本历史

  • 2022年1月16日 版本0.1.0
  • 2022年3月29日 版本0.1.1 AES加密和RSA加密

基本使用

案例1:快速入门
package main

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

func main() {
	passwordConfig := zdpgo_password.ZdpPasswordConfig{
		Debug: true,
	}
	p := zdpgo_password.New(passwordConfig)

	// 默认密码加密方式
	result := p.Make("123456")
	fmt.Println(result)
	// 检查
	fmt.Println(p.Check("123456", result))

	// md5密码加密方式
	result = p.Md5("123456")
	fmt.Println(result)
	// 校验
	fmt.Println(p.Md5Check("123456", result))
}
案例2:AES加密和解密
package main

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

func getAes() *zdpgo_password.Aes {
	config := zdpgo_password.AesConfig{}
	aes := zdpgo_password.NewAes(config)
	return aes
}

// AES加密和解密
func demo1EncryptStringDecryptString() {
	aes := getAes()

	// 加密
	encrypted := aes.EncryptString("{\"cmd\": 3000, \"msg\": \"ok\"}")
	fmt.Println("encrypted:", encrypted)

	// 解密
	decrypted, _ := aes.DecryptString(encrypted)
	fmt.Println("decrypted:", decrypted)

	// 从python复制过来的
	data := "0qg69fOjmE0oR59muWdXoWhr5d4Z0XyQaC69684mAsw="
	decryptString, err := aes.DecryptString(data)
	fmt.Println("解密Python:", decryptString, err)
}

// 测试aes gcm加密和解密
func demo2EncryptGcm() {
	tool := getAes()

	// 加密
	data := "{\"cmd\": 3000, \"msg\": \"ok\"}"
	key := "_ZhangDapeng520%"
	edata, nonce, tag := tool.EncryptGcm(data, key)

	// 解密
	decrypted, err := tool.DecryptGcm(edata, key, nonce, tag)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println("decrypted:", decrypted)

	// 从Python复制过来的
	edata = "nZEhJnB7h6ow7pkA1WGHS6Qf0npQtuTbr6o="
	nonce = "3KICnt6GJVxANgC2ikhTNA=="
	tag = "gZUkLzz88GTDzNvA1vfzqA=="
	decrypted, err = tool.DecryptGcm(edata, key, nonce, tag)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println("从Python复制过来的:", decrypted)
}

func main() {
	//demo1EncryptStringDecryptString() // AES加密和解密
	demo2EncryptGcm()
}
案例3:RSA加密和解密
package main

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

func getRsa() *zdpgo_password.Rsa {
	r := zdpgo_password.NewRsa(zdpgo_password.RsaConfig{
		PrivateKeyPath: "private.pem",
		PublicKeyPath:  "public.pem",
		BitSize:        2048,
	})
	return r
}

// RSA加密和解密
func demo1() {
	r := getRsa()
	data := "hello 张大鹏!!!"

	// 加密
	cipherText := r.Encrypt([]byte(data))
	fmt.Println(cipherText)

	// 解密
	result := r.Decrypt(cipherText)
	fmt.Println(result)
}

func demo2() {
	r := getRsa()
	data := "abc 123 张大鹏"

	// 加密
	result, err := r.EncryptSha1(data)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)
	data = "j+Lc1OtOu+rF9d+cKvU7IUmQ/WNTQk20t5mEABcT2liWPic2KIuF8jbQrstBdvh7zmj1KIYf5z6PD9CNCfLPnthD6k1+tLVBWPkCj3x6LVrURInJRJTHh6QrcvxM1ZmT563/D0okw9O0cr8Qc3nMDT2/dUTEpzShT3dPG76ztoX4nSd4MMEbBIOTT3G7deglwMZNDVMfUmgLz2WTa2lijfTrL7rpGcD0ofeqjUXmYPo6OV0dQV6A1myJqcSHTGNcmwvaZhGVxrKW87nB5ZJnZcYkLfpm+1YFr93iR+Qj1ygjhTqnX5pwxyoNg090/1omvXYv8jSq2mhArAVncRl7KA=="

	// 解密
	result, err = r.DecryptSha1(data)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)

	// 解密使用python加密的字符串
	data = "S1j7yD+RlmQjeari4qoxLGzEO+BAPUOY2IOnqD7rEygfaDGy4ansvCTwKNfmfEpotS1KCkdcfliESkoQ/cw27Rm6AMPAMfQRqh2b4SqIpZTDG1dI4zkrL+zXSMXwDcaOerkLVFrLC2OUHBBf8Bry+dKUHw6ts3XkdrQZzHSgKfNwY6dRZlElbJL2M7zO0ciRF/r69+Ct4xX0u/Ctf+VlkL5+iYmt2HT04ydPp4h3FCAzDr8rx/Ms59pOvCgU/qrDBLyRudlvjooIB7VZFql7cqkUvjSew5EK4C4GAehJkwD+Nrq6sTb9dU3Db4EbtuuVUKdgNcV7HNrhs+9NlwqGLg=="
	result, err = r.DecryptSha1(data)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(result)
}

func main() {
	//demo1() // RSA加密和解密
	demo2() // RSA SHA1加密和解密
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Base64Decode added in v0.1.1

func Base64Decode(data string) string

Base64Decode 对数据使用base64标准解码

func Base64Encode added in v0.1.1

func Base64Encode(data []byte) string

Base64Encode 对数据使用base64标准编码

func Base64URLDecode added in v0.1.1

func Base64URLDecode(data string) string

Base64URLDecode 对数据使用base64 URL解码

func Base64URLEncode added in v0.1.1

func Base64URLEncode(data []byte) string

Base64URLEncode 对数据使用base64 URL编码

func CheckPassword

func CheckPassword(rawPwd, encodedPwd string) bool

CheckPassword 默认的密码校验方式 @param rawPwd 原始密码 @param encodedPwd 加密后的密码

func Encode

func Encode(rawPwd string, options *Options) (string, string)

Encode 对密码按照指定配置进行加密。如果参数2是nil,则使用默认的配置。返回加密后的字符串。 @param rawPwd 要加密的密码 @param options 加密配置

func MakePassword

func MakePassword(rawPwd string) string

MakePassword 默认的密码加密方式,返回加密的密码 @param rawPwd 要加密的密码

func SSLCreate

func SSLCreate()

创建SSL证书

func Verify

func Verify(rawPwd string, salt string, encodedPwd string, options *Options) bool

Verify 校验密码 @param rawPwd 原始密码 @param salt 盐值 @param encodedPwd 加密后的密码 @param options 加密配置 @return bool 校验密码是否正确

Types

type Aes added in v0.1.1

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

func NewAes added in v0.1.1

func NewAes(config AesConfig) *Aes

func (*Aes) Decrypt added in v0.1.1

func (a *Aes) Decrypt(src []byte) ([]byte, error)

Decrypt 解密

func (*Aes) DecryptGcm added in v0.1.1

func (a *Aes) DecryptGcm(data, key, nonce, tag string) (string, error)

func (*Aes) DecryptString added in v0.1.1

func (a *Aes) DecryptString(src string) (string, error)

DecryptString AES解密字符串

func (*Aes) Encrypt added in v0.1.1

func (a *Aes) Encrypt(src []byte) ([]byte, error)

Encrypt 加密

func (*Aes) EncryptGcm added in v0.1.1

func (a *Aes) EncryptGcm(data, key string) (string, string, string)

func (*Aes) EncryptString added in v0.1.1

func (a *Aes) EncryptString(src string) string

EncryptString 加密字符串

type AesConfig added in v0.1.1

type AesConfig struct {
	Key       string `yaml:"key" json:"key"`               // key
	BlockSize int    `yaml:"block_size" json:"block_size"` // 块的大小
}

Aes AES加密算法的配置

type Ecc added in v1.1.0

type Ecc struct {
	PrivateKey *eciesgo.PrivateKey
	PublicKey  *eciesgo.PublicKey
}

func NewEcc added in v1.1.0

func NewEcc() *Ecc

func (*Ecc) Decrypt added in v1.1.0

func (e *Ecc) Decrypt(data []byte) ([]byte, error)

Decrypt ECC解密数据

func (*Ecc) DecryptString added in v1.1.0

func (e *Ecc) DecryptString(data string) (string, error)

DecryptString ECC解密字符串

func (*Ecc) Encrypt added in v1.1.0

func (e *Ecc) Encrypt(data []byte) ([]byte, error)

Encrypt ECC加密数据

func (*Ecc) EncryptString added in v1.1.0

func (e *Ecc) EncryptString(data string) (string, error)

EncryptString ECC加密字符串

type Options

type Options struct {
	SaltLen      int              // 盐的长度
	Iterations   int              // 迭代次数
	KeyLen       int              // 键的长度
	HashFunction func() hash.Hash // hash加密函数
}

type Rsa added in v0.1.1

type Rsa struct {
	Config *RsaConfig // Rsa配置对象
}

func NewRsa added in v0.1.1

func NewRsa(config RsaConfig) *Rsa

NewRsa 新建Rsa对象

func (*Rsa) Decrypt added in v0.1.1

func (r *Rsa) Decrypt(b64Data string) string

Decrypt RSA解密 @param cipherText 需要解密的byte数据 @param privateKeyPath 私钥文件路径

func (*Rsa) DecryptSha1 added in v0.1.1

func (r *Rsa) DecryptSha1(ciphertextBase64 string) (string, error)

DecryptSha1 Sha1方式的RSA解密

func (*Rsa) Encrypt added in v0.1.1

func (r *Rsa) Encrypt(plainText []byte) string

Encrypt RSA加密 @param plainText 要加密的数据 @param publicKeyPath 公钥匙文件地址

func (*Rsa) EncryptSha1 added in v0.1.1

func (r *Rsa) EncryptSha1(dataToEncrypt string) (string, error)

EncryptSha1 此算法的加密结果能够被zdppy-python的RSA的decrypt方法解密

func (*Rsa) GenerateKey added in v0.1.1

func (r *Rsa) GenerateKey()

GenerateKey 生成RSA私钥和公钥,保存到文件中 @param bitSize 证书大小 @param privateKeyName 私钥文件名 @param publicKeyName 公钥文件名

func (*Rsa) GeneratePrivateKey added in v0.1.1

func (r *Rsa) GeneratePrivateKey() *rsa.PrivateKey

func (*Rsa) GeneratePublicKey added in v0.1.1

func (r *Rsa) GeneratePublicKey(privateKey *rsa.PrivateKey)

func (*Rsa) Sign added in v0.1.1

func (r *Rsa) Sign(plainText string) string

Sign 签名:采用sha1算法进行签名并输出为hex格式(私钥PKCS8格式)

func (*Rsa) Verify added in v0.1.1

func (r *Rsa) Verify(originalData, signData string) bool

Verify 验签:对采用sha1算法进行签名后转base64格式的数据进行验签

type RsaConfig added in v0.1.1

type RsaConfig struct {
	PrivateKeyPath string `yaml:"private_key_path" json:"private_key_path"` // 私钥文件路径
	PublicKeyPath  string `yaml:"public_key_path" json:"public_key_path"`   // 公钥文件路径
	BitSize        int    `yaml:"bit_size" json:"bit_size"`                 // 私钥文件的key长度
	Debug          bool   `yaml:"debug" json:"debug"`                       // 是否为开发环境
}

RsaConfig RSA配置对象

type ZdpPassword

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

密码加密核心对象

func New

func New(config ZdpPasswordConfig) *ZdpPassword

创建加密对象

func (*ZdpPassword) Check

func (p *ZdpPassword) Check(userPassword, dataPassword string) bool

Check 检查密码是否正确 @param userPassword 用户输入的密码 @param dataPassword 数据库中加密的密码

func (*ZdpPassword) Make

func (p *ZdpPassword) Make(password string) string

Make 密码加密 @param password 用户要加密的密码

func (*ZdpPassword) Md5

func (p *ZdpPassword) Md5(content string) string

Md5 生成md5加密字符串 @param content 要加密的内容

func (*ZdpPassword) Md5Check

func (p *ZdpPassword) Md5Check(content string, md5Content string) bool

Md5Check 生成md5加密字符串 @param content 要加密的内容 @param md5Content md5加密后的内容

type ZdpPasswordConfig

type ZdpPasswordConfig struct {
	Debug       bool   // 是否为debug模式
	LogFilePath string // 日志路径
}

配置对象

Directories

Path Synopsis
examples
sslcreate command
z01_hello command
z02_aes command
z03_rsa command
libs
plugins
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