bcrypt

young·2022년 1월 2일
0

bcrypt란?

: rainbow table 공격 방지를 위해 salt를 통합한 단방향 암호화 파이썬 라이브러리

여기서 단방향이란?
: 이름 그대로 한쪽 방향으로만 암호화 한다는 의미. 즉, 암호화 방법은 있으나 복화 방법은 없음.

bcrypt를 이용한 암호화 구현

1) pip로 bcrypt 설치

pip install bcrypt

2) '12345'이라는 비밀번호를 암호화

  • bcrypt를 import
    >>> import bcrypt

  • 암호화 하기 전 password
    >>> password = '12345'

  • bcrypt를 이용하여 암호화 (bcrypt.gensalt()는 salt 값을 만드는 함수(랜덤으로 값을 지정))
    >>> hashed_password = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt())

  • 암호화 된 password를 DB에 저장하기 좋은 형태로 string으로 다시 decode
    >>> hashed_password = hashed_password.decode('utf-8')

3) 암호화된 비밀번호를 입력받은 값과 일치하는지 확인하는 과정

>>> bcrypt.checkpw('12345678'.encode('utf-8'), hashed_password.encode('utf-8'))

  • bcrypt의 checkpw 함수를 이용하여 입력받은 비밀번호화 DB에 저장된 암호화한 비밀번호가 일치하는지 확인
  • 일치하면 True / 일치하지 않으면 False 반환
  • DB에 저장된 암호화한 비밀번호는 byte 타입이 아니므로 checkpw 함수를 쓸 때도 encode를 반드시 해줘야 함
profile
🐿 개발중...

0개의 댓글