암호화를 위해 bcrypt 라이브러리 설치
$
pip install bcrypt
파이썬 인터프리터에서 임포트하여 사용
import bcrypt
bcrypt는 str 이 아닌 Bytes 데이터를 암호화 하기 때문에 필요에 따라 인코딩 또는 디코딩 해야함
str
->bytes
: 인코딩
bytes
->str
: 디코딩
패스워드 암호화하기
password = '1234'
hashed_password = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt())
print(hashed_password)
b'$2b$12$YFs9rh.1LgJwZuf9ibyjpuLvBoCaGX0MzedFWF2Jo0zU3lMZurZ4a'
bcrypt.checkpw(사용자가 입력한 pw, 저장된 암호화된 pw)
메소드가 해준다. (모두 bytes type)으로 입력하기
pip install pyjwt
SECRET = 'secret' #'랜덤한 조합의 비밀번호' 예제이므로 단순하게 'secret'이라고 하겠습니다.
access_token = jwt.encode({'id' : 1}, SECRET, algorithm = 'HS256')
print(access_token)
'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MX0.-xXA0iKB4mVNvWLYFtt2xNiYkFpObF54J9lj2RwduAI'
jwt 의 결과물은 bytes타입(ver 1.7) 또는 str타입(ver 2.0)
bytes로 나온 결과물은 str로 바꿔주면 jwt Token, (access_token)이다. 이렇게 발행한 토큰을 전달하면 된다.
요청에서 들어온 토큰이 우리가 발행한 토큰과 일치하는지 확인하기 위해서 확인하기
header = jwt.decode(access_token, SECRET, algorithm = 'HS256')
print (header)
{'id' : 1}