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
}
相关推荐
ae_zr1 分钟前
QT动态编译应用后,如何快速获取依赖
开发语言·qt
gjxDaniel4 分钟前
Kotlin编程语言入门与常见问题
android·开发语言·kotlin
jiang_changsheng25 分钟前
环境管理工具全景图与深度对比
java·c语言·开发语言·c++·python·r语言
yong999035 分钟前
MATLAB面波频散曲线反演程序
开发语言·算法·matlab
LeoZY_39 分钟前
开源项目精选:Dear ImGui —— 轻量高效的 C++ 即时模式 GUI 框架
开发语言·c++·ui·开源·开源软件
Fightting8840 分钟前
Tkinter Button bind hover message
开发语言·python
qq_336313931 小时前
javaweb-web基础(springboot入门)
java·开发语言·mysql
玄同7651 小时前
LangChain 1.0 模型接口:多厂商集成与统一调用
开发语言·人工智能·python·langchain·知识图谱·rag·智能体
特立独行的猫a1 小时前
C++轻量级Web框架介绍与对比:Crow与httplib
开发语言·前端·c++·crow·httplib
fie88891 小时前
基于C#的推箱子小游戏实现
开发语言·c#