bycript 암호화

인간·2022년 7월 10일
0

Bcrypt
인증 인가는 프론트와 백엔드 간의 상호 작용이다. 인증 구현에 앞서, 개인정보의 보호를 위해 필수적으로 해야하는 요소인 비밀번호 암호화를 알아보자.

우선 암호화를 위해 Bcrypt 라이브러리를 설치한다.

pip install bcrypt

import bcrypt

####bcrypt의 암호화 방법
Bcrypt는 str데이터가 아닌 bytes 데이터를 암호화 한다. 따라서 암호화시 bytes화 해야한다. 파이썬에서는 str 을 encode 하면 bytes 이진화 되고 bytes 를 decode 하면 str화 한다. encode, decode 시에는 우리가 인식할 수 있는 형태로 변환하기 위해 utf-8 유니코드 문자 규격을 사용한다.

password = '1234'
hashed_password = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt())
print(hashed_password)

b'$2b$12$YFs9rh.1LgJwZuf9ibyjpuLvBoCaGX0MzedFWF2Jo0zU3lMZurZ4a'

맨 앞의 b는 bytes화 됐다는 의미이다. type함수를 이용해 hashed_password의 타입을 알아보자.

type(hashed_password)
# <class 'bytes'>

이렇게 암호화된 방식은 일방향 암호화 즉 복호화 할 수 없도록 암호화하는 방식이다.
비밀번호를 확인하는 작업을 해보자.

new_password = '1234'
bcrypt.checkpw(new_password.encode('utf-8'),hashed_password)

# bcrypt.checkpw(입력받은 password, 암호화된 password)
# True

bcrypt.checkpw() 메서드가 비밀번호를 확인하는 역할을 하고 있다.
비교하는 두 password의 데이터 타입은 bytes이어야 합니다.

이 로직을 장고에 적용해 로그인 기능을 구현할 때 활용하면 되겠다.

profile
잇츠미

0개의 댓글