Bcrypt & Pyjwt 사용방법

김진수·2021년 1월 7일
post-thumbnail

Brypt

python 인터프린터 실행합니다.
실행하고 라이브러리를 임포트 합니다.

bcrypt의 암호화 방법!
bcrypt는 str 데이터가 아닌 bytes 데이터를 암호화합니다.

따라서 암호화시에 bytes화 해야합니다.

파이썬에서는 str을 encode하면 bytes(이진화) 되고, bytes를 decode하면 str화 됩니다.

encode, decode 시에는 우리가 인식할 수 있는 형태로 변환하기 위해 'UTF-8' 유니코드 문자 규격을 사용합니다.

본격적으로 bcypt 라이브러리를 사용하겠습니다.

먼저 패스워드를 암호화 해보겠습니다.

위와 같이 코드를 작성하면 암호화된 비밀번호를 얻을 수 있습니다.

그렇다면 암호화된 데이터 타입은 무엇일까여? 당연히 bytes입니다.


이렇게 암호화된 방식은 일방향 암호화 즉 복호화 할 수 없도록 암호화하는 방식입니다.
그렇다면 비밀번호를 확인 하는 작업은 어떻게 할 수 있을까여? 바로 bcrypt가 지원해줍니다.

bcypt.checkpw()메소드가 바로 그일을 하고 있습니다.
이 메소드에는 규칙이 있습니다.(입력받은 패스워드, 저장된 암호화된 패스워드)
둘 다 데이터 타입은 bytes여야 합니다.

Pyjwt

이제 인증을 위한 수단인 JSON Web Token을 구현해보겠습니다.

먼저 Pyjwt 라이브러리를 설치합니다.

마찬가지로 파이썬 인터프리터를 실행해주세요.

위와 같이 라이브러리를 동작시킬 수 있습니다.
jwt의 결과물도 bytes타입입니다.
위처럼 access_token이 jwt token입니다. 이렇게 발급된 토큰은 프론트엔드 엔지니어에게 전달해야합니다.
그러면 로그인이 성공되면 앞으로는 전달된 토큰으로 사용자를 식별합니다.

그럼 토큰이 우리가 발행한 토큰이 맞는 지 식별을 해야합니다.

위와같이 jwt를 이용해 토큰값을 확인하여 식별하면 됩니다.

decode 결과는 우리가 encode할 때 넘겼던 header 값인 {'id' : 1}입니다.
이 말은 우리가 담아 넘기는 header값을 통해 유저를 식별할 수 있다는 이야기 입니다.

profile
백엔드 개발자

0개의 댓글