GO语言编程:GoLand 2022 (Win&Mac) v2022.3 中文激活版
下面是一个简单的 Golang 代码示例,用于实现密码登录功能:
```go
package main
import (
"fmt"
"golang.org/x/crypto/bcrypt"
)
func main() {
// 假设用户输入的密码为 "password"
password := "password"
// 对密码进行加密处理
hashedPassword, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
if err != nil {
fmt.Println("密码加密失败!")
return
}
// 假设从数据库中获取的加密后的密码为 "hashedPassword"
storedPassword := "hashedPassword"
// 比较输入的密码与数据库中的密码是否一致
err = bcrypt.CompareHashAndPassword([]byte(storedPassword), []byte(password))
if err != nil {
fmt.Println("密码错误!")
return
}
fmt.Println("登录成功!")
}
```
代码中使用了 `golang.org/x/crypto/bcrypt` 包来对密码进行加密处理和比较操作。`bcrypt.GenerateFromPassword()` 函数接受两个参数,第一个参数是要加密的密码,第二个参数是加密的强度,这里使用了默认强度。
`bcrypt.CompareHashAndPassword()` 函数接受两个参数,第一个参数是从数据库中获取的加密后的密码,第二个参数是用户输入的密码。如果两个密码一致,函数将返回 `nil`,否则将返回一个错误。