十小时开源了一个加密算法仓库,功能强大,后端开发人员狂喜!
写在前面
昨晚上睡觉前我就在想能不能把多个加密算法集成到一个库中,方便开发者调用,说干就干,今天肝了一天,中午直接吃的外卖哈哈哈哈,终于把仓库开源了,欢迎各位Go开发者Star和Fork!
仓库地址
go-crypto-guard :https://github.com/palp1tate/go-crypto-guard
介绍
该存储库包含一个用 Go 编写的综合密码哈希库。该库支持多种哈希算法,包括 PBKDF2(使用 SHA1、SHA256、SHA384、SHA512 和 MD5)、Bcrypt、Scrypt、Argon2、HMAC、Blake2b 和 Blake2s。它允许自定义盐长度、迭代、密钥长度和算法选择。该开源项目旨在为开发人员提供用于安全密码存储和验证的多功能工具。尤其是后端开发人员,在实现登录注册业务中通常会遇到密码加密和验证的问题,该库可以很好的解决这个问题,功能强大。为了更方便的想使用什么算法就使用什么算法(含加盐),于是这个仓库就横空出世了。
支持的算法:
- SHA512
- SHA384
- SHA256
- SHA1
- Md5
- HMAC
- Argon2
- Bcrypt
- Scrypt
- Blake2b
- Blake2s
password的格式与Django内置的加密算法格式相同:
<algorithm>$<iterations>$<salt>$<hash>
安装
go get github.com/palp1tate/go-crypto-guard
用法
下面提供了一些用法示例:
package mainimport ("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,可以填写全部参数,也可以不完全填写。但对于其他算法,它们不需要那么多参数,你甚至可以只用指定具体的算法:
//Bcrypt
options := pwd.Options{Algorithm: pwd.Bcrypt,}//HMAC
options := pwd.Options{Algorithm: pwd.HMAC,}//...
Options定义用于自定义密码散列过程的参数。每个字段都有一个默认值,即使您不传递参数也是如此。
// 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".
}
未来的计划
计划在未来的版本中加入更多的哈希算法,以满足不同的场景和需求。以下是可能考虑的一些算法:
- RSA
- DES
- AES
- ……
也有考虑出一个Python版本。
请注意,这只是一个计划,可能会根据项目需求和社区反馈进行更改。将通过 GitHub 存储库向用户通报任何更改或添加的最新情况。
相关文章:
十小时开源了一个加密算法仓库,功能强大,后端开发人员狂喜!
写在前面 昨晚上睡觉前我就在想能不能把多个加密算法集成到一个库中,方便开发者调用,说干就干,今天肝了一天,中午直接吃的外卖哈哈哈哈,终于把仓库开源了,欢迎各位Go开发者Star和Fork! 仓库地址 go-cryp…...
标准化套利的使用
交易对象:目前使用郑商所,大商所的spd标准化套利组合进行交易。 交易平台:易盛极星极星产品网 手续费研究:白糖期货手续费和保证金2023年09月更新 - 九期网 本人使用的期货交易公司:中信期货(幸亏资金量大ÿ…...
【MySQL数据库事务操作、主从复制及Redis数据库读写分离、主从同步的实现机制】
文章目录 MySQL数据库事务操作、主从复制及Redis数据库读写分离、主从同步的实现机制ACID及如何实现事务隔离级别:MVCC 多版本并发控制MySQL数据库主从复制主从同步延迟怎么处理Redis 读写分离1.什么是主从复制2.读写分离的优点 Redis为什么快呢? MySQL数…...
十五、红外遥控器
十五、红外遥控器 介绍基本接收和发送遥控器键码外部中断和外部中断寄存器 红外解码中断函数红外遥控电机模块电机调速 介绍 基本接收和发送 空闲状态:红外LED不亮,接收头输出高电平发送低电平:红外LED以38KHz闪烁,接收头输出低…...
diot函数解析
文章目录 前言一、Rio_readinitb二、Rio_readlineb三、strstr四、strcat五、Open_clientfd六、Rio_writen总结 前言 备战CSAPP中的ProxyLab时解析书上的diot函数中遇到了一些不会的函数,遂解析记录。 一、Rio_readinitb 读和解析请求行 Rio_readinitb(&rio,…...
Python函数绘图与高等代数互融实例(一):正弦函数与余弦函数
Python函数绘图与高等代数互融实例(一):正弦函数与余弦函数 Python函数绘图与高等代数互融实例(二):闪点函数 Python函数绘图与高等代数互融实例(三):设置X|Y轴|网格线 Python函数绘图与高等代数互融实例(四):设置X|Y轴参考线|参考区域 Python函数绘图与高等代数互融实例(五…...
Python 判断回文数
"""判断输入的数是否为回文数介绍:回文数:数字从高位到低位正序排列和低位到高位逆序排列都是同一数值例如:数字 1221 无论正序还是逆序都是 1221知识点:1、获取字符串长度函数len()2、条件语句if/elif/else3、循环…...
人工智能在金融领域的五个应用案例
随着科技的进步,人工智能(Artificial Intelligence,AI)正逐渐渗透到各个行业中,其中包括金融领域。本文介绍人工智能在金融领域的五个应用案例,以期帮助大家更好地了解这个新兴技术在金融中的价值和作用。 文章目录 Part1 风险管理…...
java 工程管理系统源码+项目说明+功能描述+前后端分离 + 二次开发
Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目显示…...
Effective C++看书笔记(2):构造/析构/赋值运算
构造/析构/赋值运算 5:了解C默默编写并调用哪些函数6:如果不想使用编译器自动生成的函数,就该明确拒绝7:为多态基类声明virtual析构函数8:别让异常逃离析构函数9:绝不在构造和析构过程中调用virtual函数10&…...
交换奇偶位:交换一个整数的二进制的奇偶位置(仅考虑正数情况)
方法二: 设计思想: 0xAAAAAAAA 的二进制表示为 10101010...(从最低位开始) 0x55555555 的二进制表示为 01010101...(从最低位开始) 问题:更加想不到掩码!!…...
Unity中的两种ScriptingBackend
一:前言 二:两种模式的介绍 ios:unity只有il2cpp模式的编译才支持64位系统,mono是不支持的,在快速开发阶段仍然支持Mono,但是不能再向Apple提交Mono(32位)的应用 苹果在2016年1月就要求所有新上架游戏必须支…...
vue3硅谷甄选01 | 使用vite创建vue3项目及项目的配置 环境准备 ESLint配置 prettier配置 husky配置 项目集成
文章目录 使用vite创建vue3项目及项目的配置1.环境准备2.项目配置ESLint校验代码工具配置 - js代码检测工具1.安装ESLint到开发环境 devDependencies2.生成配置文件:.eslint.cjs**3.安装vue3环境代码校验插件**4. 修改.eslintrc.cjs配置文件5.生成ESLint忽略文件6.在package.js…...
蓝牙核心规范(V5.4)10.5-BLE 入门笔记之HCI
HCI全称:HOST Constroller Interface 主机控制器接口(HCI)定义了一个标准化的接口,通过该接口,主机可以向控制器发出命令,并且控制器可以与主机进行通信。规范被分成几个部分,第一部分仅从功能的角度定义接口,不考虑具体的实现机制,而其他部分定义了在使用四种可能的…...
【计算机毕业设计】基于SpringBoot+Vue记帐理财系统的设计与实现
博主主页:一季春秋博主简介:专注Java技术领域和毕业设计项目实战、Java、微信小程序、安卓等技术开发,远程调试部署、代码讲解、文档指导、ppt制作等技术指导。主要内容:毕业设计(Java项目、小程序、安卓等)、简历模板、学习资料、…...
2023年中国研究生数学建模竞赛E题
出血性脑卒中临床智能诊疗建模 一、背景介绍 出血性脑卒中指非外伤性脑实质内血管破裂引起的脑出血,占全部脑卒中发病率的10-15%。其病因复杂,通常因脑动脉瘤破裂、脑动脉异常等因素,导致血液从破裂的血管涌入脑组织,从而造成脑部…...
基于springboot+vue的大学生科创项目在线管理系统
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...
什么是文档签名证书?PDF文档怎么签名?
什么是文档签名证书?在“互联网”时代,电子合同、电子证照、电子病历、电子保单等各类电子文档无纸化应用成为常态。如何让电子文档的签署、审批具有公信力及法律效力,防止伪造签名、假冒签名等问题出现,是电子文档无纸化应用的主…...
2023年汉字小达人区级比赛倒计时2天,最新问题解答和真题练一练
今天是9月23日,距离2023年第十届汉字小达人区级比赛(初赛)的自由报名参赛时间还有2天,六分成长结合家长和小朋友们问的比较多的问题进行解答,并提供一些真题供大家练习、了解比赛题型和规则。 问题1:2023年…...
关于地址存放的例题
unsigned int a 0x1234; unsigned char b *(unsigned char*)&a; 上面代码大端存储和小端存储的值分别是多少? 大端存储的是把高位地址存放在低位地址处,低位存放到高位。小端是高位存放在高位,低位在低位。因为a是整型,所…...
胡桃讲编程・蓝屏急救进阶:磁盘修复 + 引导修复 + 网络修复,排除法根治顽固蓝屏
(微星 GL62M 7REX 地下程序员实操版 | 上期指令无效必看)哈喽各位自学开发、被蓝屏折磨到头疼的小伙伴们,我是胡桃~上一期咱们讲了三种高频蓝屏触发场景,还有系统修复的基础命令,不少朋友留言说:…...
ESP32-S3播放网络音频避坑指南:PlatformIO库依赖、I2S引脚冲突与内存优化
ESP32-S3音频开发实战:从库依赖管理到高稳定流媒体方案 引言:当智能硬件遇上音频流媒体 在物联网设备上实现音频播放功能,听起来像是把手机上的功能搬到了一个小开发板上——直到你真正开始动手。ESP32-S3凭借其双核处理能力和丰富的外设接口…...
C# DOTS内存暴涨真相(ECS组件碎片化大揭秘):基于IL2CPP内存快照的12类GC压力源定位指南
第一章:C# DOTS内存暴涨真相(ECS组件碎片化大揭秘)在Unity DOTS(Data-Oriented Technology Stack)实践中,许多开发者遭遇了看似“无故”的内存持续增长现象——托管堆(Managed Heap)…...
为什么92%的团队在2026 Q1前必须升级AOT?:Python原生编译配置失败率下降83%的7个关键参数调优
第一章:Python 原生 AOT 编译方案 2026 配置步骤详解Python 原生 AOT(Ahead-of-Time)编译方案 2026 是 CPython 官方实验性分支,旨在为标准 Python 代码生成独立、免解释器的原生可执行文件,无需运行时依赖 libpython.…...
别再对着黑乎乎的标签图发愁了!手把手教你给农业大棚遥感数据集上色(附Python代码)
农业大棚遥感数据可视化:用Python给黑白标签注入色彩生命 当你第一次打开农业大棚遥感数据集的标签文件时,那片漆黑是否让你感到困惑?作为一名刚接触遥感图像分割的开发者,我完全理解这种挫败感——你明明知道这些像素值代表着不同…...
ATCODER ABC C题解饺
这,是一个采用C精灵库编写的程序,它画了一幅漂亮的图形: 复制代码 #include "sprites.h" //包含C精灵库 Sprite turtle; //建立角色叫turtle void draw(int d){for(int i0;i<5;i)turtle.fd(d).left(72); } int main(){ …...
Acrobat-Pro-DC-2026|Win中文|PDF编辑器|免安装版安装教程
我用夸克网盘给你分享了「Acrobat-....001」,点击链接或复制整段内容,打开「夸克APP」即可获取。动作辌辍渥玠璜多好/~3c073Y3Gtf~:/链接:https://pan.quark.cn/s/4af90540fc07Adobe Acrobat Pro DC 2026功能强大!全球最牛PDF编辑…...
《中华网商品详情页前端性能优化实战》
🏛️ 《中华网商品详情页前端性能优化实战》背景:中华网作为“门户 电商”的复合型站点,承载着国家大事、军事、历史等内容,同时售卖相关周边商品。其特点是“用户年龄层偏大、浏览器版本陈旧、网络环境复杂”。核心挑战…...
MCP是AI的“手”,Skills是AI的“脑回路”——一个都不能少
写在前面 昨天我刚刚写完了MCP相关的博客,身边就有朋友问我:“MCP和最近大火的Agent Skills到底什么关系?是不是以后只用Skills就够了?”说实话,这个问题我也纠结过一阵。2026年初,Skills几乎刷屏了整个AI开…...
Flask-SQLAlchemy + Flask-Login 整合避坑指南:从用户模型定义到安全会话管理的完整流程
Flask-SQLAlchemy与Flask-Login深度整合实战:从用户模型到会话安全的全流程指南 1. 环境配置与基础架构搭建 在开始构建用户认证系统前,我们需要建立可靠的开发基础。以下是现代Flask项目的推荐初始化结构: /project-root ├── app/ │ ├…...
