我开源了一个加密算法仓库,支持18种算法!登录注册业务可用!

文章目录

仓库地址

仓库地址:https://github.com/palp1tate/go-crypto-guard

欢迎starfork

介绍

此存储库包含用 Go 编写的全面的密码哈希库。该库支持多种哈希算法,它允许可定制的盐长度、迭代、键长度和算法选择。这个开源项目旨在为开发人员提供一个多功能的工具,用于安全的密码存储和验证。

支持的算法:

一些加密过后的密码格式与Django内置的加密算法格式相同:

go 复制代码
<algorithm>$<iterations>$<salt>$<hash>

其他可能的格式:

go 复制代码
<algorithm>$<hash>

安装

go 复制代码
go get -u github.com/palp1tate/go-crypto-guard 

用法

SHA512

go 复制代码
// SHA512 使用 PBKDF2 和 SHA-512 对密码进行加密。
// 它接受密码、盐长度、密钥长度和迭代次数作为输入。如果你传入一个无效的值,函数将采取默认值。
// 它生成一个盐,使用 PBKDF2 和 SHA-512 派生一个密钥,并返回加密的密码。
// 密码的格式:<algorithm>$<iterations>$<salt>$<hash>
//pbkdf2_sha512$100$40fde046f66c1d9e55b4435d$1fdd34c50a98e576b612d66be507f019

password := "12345678"
encodedPassword, _ := pwd.GenSHA512(password, 12, 16, 100)
ok, _ := pwd.VerifySHA512(password, encodedPassword)

SHA384、 SHA256、 SHA1、 Md5和 Argon2的用法与 SHA512相同.

HMAC

go 复制代码
// HMAC 使用 HMAC 和 SHA-256 对密码进行加密。
// 它接受密码和盐长度作为输入。
// 它生成一个盐,使用盐和 SHA-256 计算密码的 HMAC,并返回加密的密码。
// 密码的格式:<algorithm>$<salt>$<hash>
//hmac$3bf4e2c1a9ed54575d0d1f937eb363ab$a6ed73f8fe48867db2bd58c69ebe6c0fb91ecdd8147c4352fecf018d07cb4f43

password := "12345678"
encodedPassword, _ := pwd.GenHMAC(password, 16)
ok, _ := pwd.VerifyHMAC(password, encodedPassword)

Bcrypt

go 复制代码
// Bcrypt 使用 Bcrypt 哈希函数对密码进行加密。
// 它接受一个密码作为输入,使用 Bcrypt 的默认成本从密码生成一个哈希,并返回加密的密码。
// 密码的格式:<algorithm>$<hash>
//bcrypt$243261243130246769545174546869684f565835616a694a4e3578432e6e387a4c426451526932692e443067756758334a436d3532717365784e5661

password := "12345678"
encodedPassword, _ := pwd.GenBcrypt(password)
ok, _ := pwd.VerifyBcrypt(password, encodedPassword)

对 Blake2b、 Blake2s 的使用与对 Bcrypt 的使用相同.

Scrypt

go 复制代码
// Scrypt 使用 Scrypt 密钥派生函数对密码进行加密。
// 它接受一个密码、盐长度和密钥长度作为输入。
// 它生成一个盐,使用 Scrypt 和提供的参数派生一个密钥,并返回加密的密码。
// 密码的格式:<algorithm>$<salt>$<hash>
//scrypt$679a0a3c8336a9ff36b809862e7d494c$c4cec5ca742fa984045457f76d217acf245f032251c6a3952c4d68e1cba4a488

password := "12345678"
encodedPassword, _ := pwd.GenScrypt(password, 16, 32)
ok, _ := pwd.VerifyScrypt(password, encodedPassword)

AES

go 复制代码
// AES 使用 AES 加密算法对密码进行加密。
// 它接受一个密码和一个 AES 密钥作为输入。
// 它从 AES 密钥创建一个新的密码块,对密码应用 PKCS7 填充,并使用 CBC 模式加密密码。它返回加密的密码。
// 密码的格式:<algorithm>$<hash>
// aes$BhV9oJiePwpsEwDWizJoCA==

password := "12345678"
//aes key的长度必须为32
aesKey := "palpitateabcdefghijklmn123456789"
encodedPassword, _ := pwd.GenAES(password, aesKey)
ok, _ := pwd.VerifyAES(password, encodedPassword, aesKey)

DES、ThreeDES、RC4和Blowfish的使用与Bcrypt相同,对于DES,desKey的长度必须为8。对于ThreeDES,threeDesKey的长度必须为24。rc4Key和BlowfishKey的长度没有限制,但对于Blowfish,密码的长度必须为8。

RSA

go 复制代码
// GenRSAKey 生成一对 RSA 密钥并将它们保存到文件中。 
// 它接受密钥的位数作为输入。推荐使用 2048 或 4096。 
// 它生成一个私钥和一个公钥,并分别将它们写入 "privateKey.pem" 和 "publicKey.pem"。

// RSA 使用 RSA 加密算法对密码进行加密。 
// 它接受一个密码和公钥文件的路径作为输入。 
// 它从文件中读取公钥,使用 RSA 和 PKCS1v15 填充对密码进行加密,并返回加密的密码。 
// 密码的格式:<algorithm>$<hash> 
//rsa$3p1+X80iFIDtwtKOQFjXm+deyv+cxkEIbpXuwXcqbcCvean6zyWvcrogQtDj2MkYOE2ScHpARR93RYxs3y+RXetKAHhrDqWURYcyJwuTwShBmR4hz+3WkFzhqm44IgPdlgdt70uO7TXx6fj1WmUTsZpNDTF/WNdEUO7Rzc8wahYBcnMOnPgUXrnUCYRSX7OBjuLwThnd9FTgh8CdaqESHWh6UPgkj9xz3G2uRplx2Tae0Pbsk8vQTuJXsqT//Q8yoC+ELo+5S6wTE6H8AMBdgvJgNHzFDldQD8UsZ7Ta/u2uF/joHwBA6V6IS4+1ithspE9ceJZCBWo2Cj6fMIbvjg==

// 在你可以加密密码之前,你必须先生成一对密钥。这个函数只能被调用一次,记住在验证密码时需要相同的密钥对。

_ = pwd.GenRSAKey(2048)	//只需要执行一次就可以注释掉
password := "12345678"
encodedPassword, _ := pwd.GenRSA(password, "publicKey.pem")
ok, _ := pwd.VerifyRSA(password, encodedPassword, "privateKey.pem")

ECC

go 复制代码
// ECC 使用 ECC 加密算法对密码进行加密。
// 它接受一个密码和一个私钥作为输入。
// 它计算密码的 SHA-256 摘要,使用私钥对摘要进行签名,并返回加密的密码。
// 密码的格式:<algorithm>$<hash>
//ecc$BQOoQvBhRHKi9GsV0qpPiyMJ5hRwdiXlQL7CcMsPCo1GvIomtb8xzjNnmq7RNRWmS9AKXo+i0Cg4fmAdLeCN8w==


password := "12345678"
privateKey, _ := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
encodedPassword, _ := pwd.GenECC(password, privateKey)
publicKey := privateKey.PublicKey
ok, _ := pwd.VerifyECC(password, encodedPassword publicKey)
相关推荐
冰水°3 小时前
2.5_XXE(XML外部实体注入)
xml·安全·网络安全·xml外部实体注入·外部实体注入·xml漏洞
黑客K-ing6 小时前
网络安全名词解释
开发语言·网络·安全·网络安全·php
无情啦少6 小时前
shodan 【2】(泷羽sec)
安全·web安全·网络安全
dxzhkj8888888 小时前
智能井盖监测终端的构成与工作流程
安全
网络安全-老纪8 小时前
网络安全专业名词解释
安全·web安全
鹏大师运维9 小时前
【系统配置】命令行配置麒麟安全中心应用程序来源检查
linux·安全·国产化·麒麟·国产操作系统·1024程序员节·应用检测
网安_秋刀鱼9 小时前
中间件安全
安全·web安全·网络安全·中间件·1024程序员节
nfgo9 小时前
FIPS203 后量子安全ML-KEM(标准简读)
安全·pqc
互联网安全研究院9 小时前
施耐德电气40GB数据失窃,遭黑客勒索
安全
网安CILLE10 小时前
2024下半年自学黑客(网络安全)
linux·网络·安全·web安全·网络安全·职场和发展·密码学