密码哈希

嗨,我是 Philipp!
我想告诉你,我的平台 Go Web 示例课程 刚刚上线。享受关于 Go 中 Web 开发的易于理解的视频课程。一定要查看我为早期支持者提供的特价优惠。
我们会在那里见面的!:)
了解更多

密码哈希(bcrypt)

此示例将展示如何使用 bcrypt 哈希密码。为此,我们必须像这样go get golang bcrypt 库

$ go get golang.org/x/crypto/bcrypt

从现在开始,我们编写的每个应用程序都将能够使用此库。

// passwords.go
package main

import (
    "fmt"

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

func HashPassword(password string) (string, error) {
    bytes, err := bcrypt.GenerateFromPassword([]byte(password), 14)
    return string(bytes), err
}

func CheckPasswordHash(password, hash string) bool {
    err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password))
    return err == nil
}

func main() {
    password := "secret"
    hash, _ := HashPassword(password) // ignore error for the sake of simplicity

    fmt.Println("Password:", password)
    fmt.Println("Hash:    ", hash)

    match := CheckPasswordHash(password, hash)
    fmt.Println("Match:   ", match)
}
$ go run passwords.go
Password: secret
Hash:     $2a$14$ajq8Q7fbtFRQvXpdCq7Jcuy.Rx1h/L4J60Otx.gyNLbAYctGMJ9tK
Match:    true