現在、bcrypt を使用してシード パスワードを暗号化/ハッシュし、MYSQL に保存しようとしていますが、同じパスワードが与えられ続けます。 Pythonを使用しています。助けていただければ幸いです。
user.py
app.dbインポートベースから sqlalchemy.orm からのインポートの検証 from sqlalchemy import 列、整数、文字列 ソルト = bcrypt.gensalt() クラス ユーザー(ベース): __テーブル名__ = 'ユーザー' id = 列(整数、primary_key=True) ユーザー名 = 列(文字列(50)、nullable=False) email = Column(String(50)、nullable=False、unique=True) パスワード = 列(文字列(200)、nullable=False) @validates('メール') def validate_email(自己、キー、電子メール): # メールアドレスに@文字が含まれていることを確認してください 電子メールで「@」をアサートする 返信メール @validates('パスワード') def validate_password(自分自身、キー、パスワード): アサート len(パスワード) > 4 # パスワードを暗号化する return bcrypt.hashpw(password.encode('utf-8'), Salt)
seed.py
from app.models import ユーザー app.db からインポート セッション、ベース、エンジン # テーブルを削除して再構築する Base.metadata.drop_all(エンジン) Base.metadata.create_all(エンジン) db = セッション() # ユーザーを挿入 db.add_all([ ユーザー(ユーザー名='alesmonde0'、メール='nwestnedge0@cbc.ca'、パスワード='password123')、 ユーザー(ユーザー名='jwilloughway1'、メール='rmebes1@sogou.com'、パスワード='password123')、 ユーザー(ユーザー名='iboddam2'、メール='cstoneman2@last.fm'、パスワード='password123')、 ユーザー(ユーザー名='dstanmer3'、メール='ihellier3@goo.ne.jp'、パスワード='password123')、 ユーザー(ユーザー名='dwari4'、メール='gmidgley4@weather.com'、パスワード='password123') ]) db.commit() db.close()
毎回同じパスワードとソルトを渡します:
#>>>> ソルト = bcrypt.gensalt() >>> bcrypt.hashpw('password123'.encode('utf-8'), ソルト) b'$2b$12$L14/6UZsC4YymGUiQgBxCO5c6YoHEFDSM9ZSvBW0CgO9YkRUGkXwW' >>> bcrypt.hashpw('password123'.encode('utf-8'), ソルト) b'$2b$12$L14/6UZsC4YymGUiQgBxCO5c6YoHEFDSM9ZSvBW0CgO9YkRUGkXwW'bcrypt
を使用して同じプレーンテキストで異なるハッシュを生成したい場合は、ハッシュを生成するたびにソルトを再生成します (ベスト プラクティスとして、これを行う必要があります):
#>>>> bcrypt.hashpw('password123'.encode('utf-8'), bcrypt.gensalt()) b'$2b$12$e1.vrDabeTDcqjqJ3Wj1fuapoGBgRaTjYNEn.v1WvuBbQLIsNlS3O' >>> bcrypt.hashpw('password123'.encode('utf-8'), bcrypt.gensalt()) b'$2b$12$jqE4jMUeGfTLYixrR5iB0OAWSM/ZIEPiscX5fPLcxn8rOHqzJOUt6'###予測:###