Go语言常用的哈希加密函数 2024-01-02 Go语言 Go, Golang 0 评论 字数统计: 224(字) 安装包1go get -u -v golang.org/x/crypto/bcrypt 哈希加密和解密函数12345678910111213141516171819202122232425// @package : bcrypt// @file : pwd.go// @author : hqd8080// @contact : hanquanding@163.com// @time : 2024/1/02// @description: 哈希密码加密和密码校验package bcryptimport "golang.org/x/crypto/bcrypt"// HashPassword 密码哈希加密func HashPassword(password string) (string, error) { hash, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.MinCost) return string(hash), err}// CheckPasswordHash 密码校验 password:原始密码 hash:加密之后的密码func CheckPasswordHash(password, hash string) bool { err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password)) if err != nil { return false } return true} 单元测试1234567891011121314151617181920212223// @package : bcrypt// @file : pwd_test.go// @author : hqd8080// @contact : hanquanding@163.com// @time : 2024/1/02// @description: pwd_testpackage bcryptimport "testing"func TestHashPassword(t *testing.T) { password, err := HashPassword("123456") if err != nil { t.Fatal(err) } t.Log(password)}func TestCheckPasswordHash(t *testing.T) { isOk := CheckPasswordHash("123456", "$2a$04$7UBIkdPQq44m0v6FenQ2Ke8Yp6EBrJQJ4Fuox15IkRJ.eHGbOwcwC") t.Log(isOk)} 1234567891011=== RUN TestHashPassword pwd_test.go:17: $2a$04$7UBIkdPQq44m0v6FenQ2Ke8Yp6EBrJQJ4Fuox15IkRJ.eHGbOwcwC--- PASS: TestHashPassword (0.00s)PASS=== RUN TestCheckPasswordHash pwd_test.go:22: true--- PASS: TestCheckPasswordHash (0.00s)PASS