현재 bcrypt를 사용하여 시드 비밀번호를 암호화/해시하고 MYSQL에 저장하려고 하는데 계속 동일한 비밀번호가 제공됩니다. 저는 파이썬을 사용하고 있습니다. 어떤 도움이라도 대단히 감사하겠습니다!
user.py
으아아아seed.py
from app.db import Base from sqlalchemy.orm import validates from sqlalchemy import Column, Integer, String salt = bcrypt.gensalt() class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) username = Column(String(50), nullable=False) email = Column(String(50), nullable=False, unique=True) password = Column(String(200), nullable=False) @validates('email') def validate_email(self, key, email): # make sure email address contains @ character assert '@' in email return email @validates('password') def validate_password(self, key, password): assert len(password) > 4 # encrypt password return bcrypt.hashpw(password.encode('utf-8'), salt)
매번 동일한 비밀번호와 솔트를 전달합니다:
으아아아동일한 일반 텍스트를 사용하여
으아아아bcrypt
다른 해시를 생성하려면 해시를 생성할 때마다 솔트를 재생성하십시오(가장 좋은 방법은 다음과 같습니다).가정:
위의 내용이 모두 정확하다면 인증에 문제가 있는 것입니다. 즉, "validate_password" 메서드가 User 클래스에 전혀 없습니다. 올바르게 식별하려고 하면 비밀번호가 트리거되고 해시됩니다.