go使用bcrypt方式实现php的password_hash

Go语言 小铁匠 2023-08-31

在Go中,你可以使用bcrypt库来实现类似于PHP的password_hash的功能。以下是一个示例代码,展示了如何在Go中使用bcrypt库来生成密码哈希:

package main

import (
    "fmt"
    "golang.org/x/crypto/bcrypt"
)

func main() {
    password := "mysecretpassword" // 要加密的密码

    // 生成密码哈希
    hashedPassword, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
    if err != nil {
        fmt.Println("Error generating password hash:", err)
        return
    }

    fmt.Println("Generated Password Hash:", string(hashedPassword))

    // 验证密码
    passwordToCompare := "mysecretpassword" // 要验证的密码
    valid := bcrypt.CompareHashAndPassword(hashedPassword, []byte(passwordToCompare))
    if valid == nil {
        fmt.Println("Password match")
    } else {
        fmt.Println("Password not match")
    }
}

在上述代码中,我们首先使用`bcrypt.DefaultCost`作为盐值。然后,我们使用`bcrypt.GenerateFromPassword`函数将密码和盐值传递给`bcrypt`库,生成密码哈希。最后,我们使用`bcrypt.CompareHashAndPassword`函数将生成的哈希与要验证的密码进行比较,以确定密码是否匹配。

------ 本文结束 感谢阅读 ------