🗒️
PasslibとHashlib メモ
■hashlib は「ハッシュ関数ライブラリ」
■passlib は「安全なパスワードハッシュのベストプラクティスをまとめたラッパー」
Passlibを使うと、自動でソルトの付与からストレッチングまでを行ってくれる。
CryptContextでハッシュ化アルゴリズムの種類、ソルト、ストレッチング回数などの設定が行える。
from passlib.context import CryptContext
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
hashed_old = pwd_context.hash("password123") # 古いハッシュを想定
# パスワード検証+必要なら再ハッシュ
verified, new_hash = pwd_context.verify_and_update("password123", hashed_old)
print(verified) # True: パスワードは正しい
print(new_hash) # None または新しいハッシュ文字列
deprecated="auto"は古い暗号化方式を検出する。
verified, new_hash = pwd_context.verify_and_update("password123", hashed_old)
verify_and_update認証の際に古い方法使ってたら新しい暗号方式で再暗号化しハッシュ値を出してくれる。
上記コードでは再暗号化したハッシュ値はnew_hashに入るので、
この値がnullでない場合にはDBのハッシュにupdateかけるとかするといいかも。
参考元
Passlib
Hashlib
理解の手助け
Passlib公式
Discussion