十小时开源了一个加密算法仓库,功能强大,后端开发人员狂喜!

写在前面

昨晚上睡觉前我就在想能不能把多个加密算法集成到一个库中,方便开发者调用,说干就干,今天肝了一天,中午直接吃的外卖哈哈哈哈,终于把仓库开源了,欢迎各位Go开发者StarFork!

仓库地址

go-crypto-guardhttps://github.com/palp1tate/go-crypto-guard

介绍

该存储库包含一个用 Go 编写的综合密码哈希库。该库支持多种哈希算法,包括 PBKDF2(使用 SHA1、SHA256、SHA384、SHA512 和 MD5)、Bcrypt、Scrypt、Argon2、HMAC、Blake2b 和 Blake2s。它允许自定义盐长度、迭代、密钥长度和算法选择。该开源项目旨在为开发人员提供用于安全密码存储和验证的多功能工具。尤其是后端开发人员,在实现登录注册业务中通常会遇到密码加密和验证的问题,该库可以很好的解决这个问题,功能强大。为了更方便的想使用什么算法就使用什么算法(含加盐),于是这个仓库就横空出世了。

支持的算法:

password的格式与Django内置的加密算法格式相同:

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

安装

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

用法

下面提供了一些用法示例:

go 复制代码
package main

import (
	"fmt"
	"github.com/palp1tate/go-crypto-guard"
)

func main() {
	originPwd := "123456"
	options := pwd.Options{
		SaltLen:    16,
		KeyLen:     32,
		Iterations: 100,
		Algorithm:  pwd.SHA512,
	}
	encodedPwd, err := pwd.Generate(originPwd, &options)
	if err != nil {
		fmt.Println(err)
	}

	fmt.Println("Encoded password:", encodedPwd)

	if ok, err := pwd.Verify(originPwd, encodedPwd); err != nil {
		fmt.Println(err)
	} else {
		fmt.Println("Verify result:", ok)
	}
}

对于SHA512、SHA256、SHA1、SHA384、Md5、Argon2,可以填写全部参数,也可以不完全填写。但对于其他算法,它们不需要那么多参数,你甚至可以只用指定具体的算法:

go 复制代码
//Bcrypt
options := pwd.Options{
		Algorithm: pwd.Bcrypt,
	}

//HMAC
options := pwd.Options{
		Algorithm: pwd.HMAC,
	}

//...

Options定义用于自定义密码散列过程的参数。每个字段都有一个默认值,即使您不传递参数也是如此。

go 复制代码
// Fields:
//   - SaltLen: Length of the salt to be generated for password hashing.
//   - Iterations: Number of iterations to apply during the hashing process.
//   - KeyLen: Length of the derived key produced by the hashing algorithm.
//   - Algorithm: The specific hashing algorithm to be used for password hashing.
type Options struct {
	SaltLen    int    //  Defaults to 16.
	Iterations int    //  Defaults to 50.
	KeyLen     int    //  Defaults to 32.
	Algorithm  string //  Defaults to "SHA512".
}

未来的计划

计划在未来的版本中加入更多的哈希算法,以满足不同的场景和需求。以下是可能考虑的一些算法:

也有考虑出一个Python版本。

请注意,这只是一个计划,可能会根据项目需求和社区反馈进行更改。将通过 GitHub 存储库向用户通报任何更改或添加的最新情况。

相关推荐
冬奇Lab1 天前
Skill 系列(05):Skill 工作流串联——4 种模式实测,并发加速 1.5x
人工智能·开源
冬奇Lab1 天前
每日一个开源项目(第141篇):hiring-agent - HackerRank 开源了他们的简历评分系统,你的简历能得几分?
人工智能·面试·开源
喝拿铁写前端1 天前
我替你试了:GitNexus 不是更强的搜索框
开源·资讯
妙码生花1 天前
从 PHP 到 AI + Golang,程序员自救转型手记(八):设计管理员模型、热重载配置
前端·后端·go
Tigger1 天前
受不了 ¥98/年的订阅,我用 Vibe Coding 自己写了个剪贴板工具
人工智能·开源·mac
冬奇Lab2 天前
每日一个开源项目(第140篇):AgentScope 2.0 - 阿里开源的生产级 Agent 框架
人工智能·开源·agent
冬奇Lab2 天前
Skill 系列(04):Skill 指标体系——L1/L2/L3 三层监控,让质量下降有据可查
人工智能·开源·llm
tyung2 天前
Go 手写 Wait-Free MPSC 无界队列:SwapPointer 实现多生产者无锁入队
后端·go
陈明勇2 天前
Go 1.26 新特性回顾:语言增强、工具升级与 Green Tea GC 默认启用
后端·go
修己xj3 天前
Ian Xiaohei Illustrations:让 AI 为你画出文章的“认知锚点”
开源