Bcrypt로 비밀번호 암호화 하기
Bcrypt 설치하기
암호화를 위해 bcrypt 라이브러리 설치
$
pip install bcrypt
파이썬 인터프리터에서 임포트하여 사용
import bcrypt
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)으로 입력하기
JWT 구현하기
- PyJWT 설치
pip install pyjwt
- 라이브러리 동작하기
import jwt #패키지명은 pyjwt이지만 임포트할때의 이름은 jwt입니다.
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}
- 인증하는 코드는 어디에 구현해야 할까?
- 엔드 포인트에 데코레이터를 구현- 데코레이터 구현은 보통 user app 에 utils.py만들어서 작성
Author And Source
이 문제에 관하여(Bcrypt로 비밀번호 암호화 하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@doubleduo/Bcrypt로-비밀번호-암호화-하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)