로그인 기능에 해시함수 적용하기

김민웅·2021년 7월 12일
0

회원가입

def user_insert(userID, userPW, userNICK):
    
    bytes_password = userPW.encode('UTF-8')
    bytes_hashed_password = bcrypt.hashpw(bytes_password, bcrypt.gensalt())
    
   
    new_user = userDB(userID, bytes_hashed_password.decode('UTF-8'), userNICK)
    db.session.add(new_user)
    db.session.commit()
    result = 'success'
    return result

패스워드를 해시함수로 변환하기 위해서는 우선 string 을 bytes로 변환하기 위해 인코딩 한다.

userPW.encode('UTF-8')

해시 패스워드로 만들고 DB에 저장할땐 바이트로 들어가지 않기때문에 꼭 string 으로 디코딩 해주고 DB에 넣어야한다.

new_user = userDB(userID, bytes_hashed_password.decode('UTF-8'), userNICK)

로그인

def user_login(userID, password):
    bytes_password = password.encode('utf-8')


    user_byID = userDB.query.filter(userID == userDB.user_id).first()
    if user_byID:
        if bcrypt.checkpw(bytes_password, user_byID.user_pw.encode('utf-8')):
            return True
    else :
        False
        

로그인 하기 위해서는 입력받은 비밀번호를 다시 byte로 인코딩한다.

인코딩 한 후 bcrypt.checkpw 로 같은지 확인하는데 DB에 저장되어있는 PW는 string 으로 디코딩된 상태여서 다시 byte로 인코딩한다.

0개의 댓글