go 密码hash加密包 bcrypt

1.明文密码一般都会通过一套算法转成一条长长的字符串,密码验证这需要通过验证明文和加密字符串是否对应

2.go 有现成的hash算法包 "golang.org/x/crypto/bcrypt" 一般我们有一个工具包utils ,在工具里封装两个方法即可, 即 明文转成加密串 加密串和明文对比 两个方法

3.代码 在utils下建文件夹 和文件 utils/pwd/enter.go

enter.go 内容如下:

Go 复制代码
package pwd

import (
	"log"

	"golang.org/x/crypto/bcrypt"
)

// 将明文密码转为 hash密码
func HashPwd(pwd string) string {

	hash, err := bcrypt.GenerateFromPassword([]byte(pwd), bcrypt.MinCost)
	if err != nil {
		log.Println(err)
	}
	return string(hash)
}

// 对比hash密码  与明文密码是否为一对
func CheckPwd(hashPwd string, pwd string) bool {
	byteHash := []byte(hashPwd)
	bytePwd := []byte(pwd)
	err := bcrypt.CompareHashAndPassword(byteHash, bytePwd)
	if err != nil {
		log.Println(err)
		return false
	}
	return true
}
相关推荐
IT成长日记20 分钟前
【Hive入门】Hive分桶表深度解析:从哈希分桶到Join优化的完整指南
hive·hadoop·哈希算法·哈希分桶·join优化
JAVA学习通38 分钟前
JAVA多线程(8.0)
java·开发语言
Luck_ff081041 分钟前
【Python爬虫详解】第四篇:使用解析库提取网页数据——BeautifuSoup
开发语言·爬虫·python
MoonBit月兔44 分钟前
双周报Vol.70: 运算符重载语义变化、String API 改动、IDE Markdown 格式支持优化...多项更新升级!
ide·算法·哈希算法
学渣676561 小时前
什么时候使用Python 虚拟环境(venv)而不用conda
开发语言·python·conda
想睡hhh1 小时前
c++STL——stack、queue、priority_queue的模拟实现
开发语言·c++·stl
小鹿鹿啊1 小时前
C语言编程--14.电话号码的字母组合
c语言·开发语言·算法
Sunlight_7771 小时前
第六章 QT基础:6、QT的Qt 时钟编程
开发语言·qt·命令模式
cloues break.1 小时前
C++初阶----模板初阶
java·开发语言·c++
wwww.wwww2 小时前
Qt软件开发-摄像头检测使用软件V1.1
开发语言·c++·qt