go言語でのハッシュ化を利用したパスワードの認証処理を実装したため、そのやり方を紹介します。
ソースの全量は、githubに上げてます。
ログインに関しては、下記を参考にしてください
ソースの全量は、githubに上げてます。
ログインに関しては、下記を参考にしてください
ginを使って簡単なログイン画面を作ってみる【Go言語】
使用環境 フレームワーク ・Gin(Webフレームワーク) ・Gorm(DB関連のフレームワーク) DB ・Postgresql テーブル定義 CREATE TABLE public.users ( id integer NOT NULL ...
登録処理でのパスワードのハッシュ化
引数に指定された文字列をハッシュ化し、stringで返すメソッド
import ( "golang.org/x/crypto/bcrypt" ) //DoCrypt 文字列をハッシュ化します func DoCrypt(str string) string { hash, _ := bcrypt.GenerateFromPassword([]byte(str), 12) return string(hash) }
・登録する処理
userinfo.Password = common.DoCrypt(password)
userinfo.Passwordは、登録するためのパスワードを定義しています。
これでハッシュ化されたパスワードを登録のためのパスワードに設定できました。
ログイン処理でパスワードの比較
err := bcrypt.CompareHashAndPassword([]byte(userinfo.Password), []byte(password))
第1引数にはuserinfo.Passwordは、DBから取得したハッシュ化されたパスワード、第2引数にはpasswordは、ログイン画面から取得したハッシュ化されていないパスワードです。
それぞれをstringを[]byteで型変換を行っています。
テスト
登録処理
パスワードは「123」を入力してます。
登録されたことが確認されました。
パスワードもハッシュ化されてます。
ログイン処理
ユーザIDに「123」、パスワードは「123」を入力しています。
ログイン処理が正常に完了し、次画面に遷移しました。
以上、ハッシュ化をまとめてみました。