概要
bcrypt は文字列をハッシュ化し暗号化する技術です
ハッシュ化後は元の値を抽出できない不可逆暗号化になります
今回は Python で bcrypt を試してみました
環境
- macOS 11.6
- Python 3.8.3
- bcrypt 3.2.0
インストール
- vim Pipfile
[packages]
bcrypt = "*"
- pipenv install
パスワードのハッシュ化
まずはパスワードをハッシュ化します
- vim test.py
import bcrypt
import sys
password = sys.argv[1].encode('utf-8')
hashed = bcrypt.hashpw(password, bcrypt.gensalt())
print(hashed)
実行するには以下のようにします
- pipenv run python test.py hoge
=> b'$2b$12$sF3y7QCwqw3dBUNwc/i7nedZD0Nai72h5Cjs764YBJLp.uOwBh6UO'
ハッシュ化したパスワードの整合性チェック
実際にパスワードが正しいかどうかチェックします
先程生成したハッシュ化パスワードは hashed に設定します
- vim test.py
import bcrypt
import sys
password = sys.argv[1].encode('utf-8')
hashed = b'$2b$12$sF3y7QCwqw3dBUNwc/i7nedZD0Nai72h5Cjs764YBJLp.uOwBh6UO'
if bcrypt.checkpw(password, hashed):
print("It Matches!")
else:
print("It Does not Match :(")
マッチは bcrypt.checkpw を使います
実行結果は以下のようになります
% pipenv run python test.py fuga
It Does not Match :(
% pipenv run python test.py hoge
It Matches!
最後に
ユーザのパスワード入力を評価する際にアプリケーション側でパスワードを保持する場合などに使いましょう
0 件のコメント:
コメントを投稿