2021年10月6日水曜日

Python で bcrypt 入門

Python で bcrypt 入門

概要

bcrypt は文字列をハッシュ化し暗号化する技術です
ハッシュ化後は元の値を抽出できない不可逆暗号化になります
今回は Python で bcrypt を試してみました

環境

  • macOS 11.6
  • Python 3.8.3
    • bcrypt 3.2.0

インストール

  • vim Pipfile
[packages]
bcrypt = "*"
  • pipenv install

パスワードのハッシュ化

まずはパスワードをハッシュ化します

import bcrypt
import sys

password = sys.argv[1].encode('utf-8')
hashed = bcrypt.hashpw(password, bcrypt.gensalt())
print(hashed)

実行するには以下のようにします

=> b'$2b$12$sF3y7QCwqw3dBUNwc/i7nedZD0Nai72h5Cjs764YBJLp.uOwBh6UO'

ハッシュ化したパスワードの整合性チェック

実際にパスワードが正しいかどうかチェックします
先程生成したハッシュ化パスワードは hashed に設定します

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 件のコメント:

コメントを投稿