#パスワードをハッシュ化したい。
タイトル通りどうしても私はハッシュ化をしたい・・・
###Code###
package db
import (
"golang.org/x/crypto/bcrypt"
)
func UserPassHash(pass string)(string,error){
hash, err := bcrypt.GenerateFromPassword([]byte(pass), bcrypt.DefaultCost)
if err != nil {
return "", err //特に意味はなし
}
return string(hash), err
}
func UserPassMach(hash,pw string)bool{
return bcrypt.CompareHashAndPassword([]byte(hash), []byte(pw)) == nil
}
##解説
#####UserPassHash(pass string)(string,error)
stringでは読み取ってくれないのでパスワードをbyteスライスに変えます
そんでもってbcrypt.GenerateFromPassword([]byte,const int)
にぶち込む
引数の2個目のbcrypt.DefaultCost
の他にMinCost,MaxCostがあり全て定数です。
ちなみに MinCost=4,DefaultCost=10,MaxCost=31となっている。たぶん・・・
#####UserPassMach(hash,pw string)bool
こちらはログインする際にパスワードとハッシュが合致しているか確認する関数
bcrypt.CompareHashAndPassword([]byte,[]byte)error
戻り値がerrorなのでnilと比較しその後 true or false で返却する
###参考文献
Password Hash & Salt Using Golang
###最後に
うん、難しかった
変なところあったら教えてください。