Wednesday_August_5
.
.
.
위코드에서 2차 프로젝트를 진행중에 있는데, 급하게 블로그를 써본다.

진짜 리얼 꿀팁이기 때문에 꼭 알려주고싶다.

일단 미리 말씀 드리자면
bcrypt.hashpw의 리턴값은 bytes이다. 하지만 str으로 나오는 분들을 위한 글이다.

🔑 Bcrypt

bcrypt를 install 하고 import 하게 되면,
hashpw라는 함수를 쓸 수 있다.

첫 번째 인자에는 bytes형태의 비밀번호,
두 번째 인자에는 bcrypt.gensalt() 라는 함수를 써주면 된다.

일단 파이썬에서는 기본적으로 str을 encode해주면 bytes로 바꿔주기 때문에, 패스워드.encode('utf-8' << 원하는 형식으로) 을 해주게되면 bytes로 변한다.

그리고 두 번째 인자에 저 gensalt()라는 함수는 bcrypt에서 지원을 해주고 이 함수는 bytes형태의 솔트값을 던져준다.

일단 여기까지 정리하자면, hashpw의 두 인자 모두 bytes로 오면 된다. 그리고 리턴값은 bytes형이다. 이게 국룰이다.

예를들어

mypwd = 'asdf1234'
hashed_password = bcrypt.hashpw(mypwd.encode('utf-8'), bcrypt.gensalt())

이렇게 하고 'hashed_password'의 타입과 출력은 다음과 같다.

<class 'bytes'>
b'$2b$12$dExYfc0KOPg.nZchoF7DOenTb811LZrdLvmJWtU1IPzZ8PmCqV8bi'

🤬 그런데 !!!!!!!!!!!

컴퓨터가 거짓말을 하나?

자꾸 리턴타입이
<class 'str'> 이렇게 나오는 것이다.

진짜 난 잘못한게 없는데... 컴퓨터도 거짓말은 안하는데...

🤩 해결 방법

자, 우선 vi창을 열고 다음 명령어를 쳐줍니다.

pip freeze | grep bcrypt

이 명령어는 bcrypt라는 단어가 들어간 설치된 모든 패키지를 보여준다.

자 이제 검거에 나서겠다.

사진이 작긴하지만ㅠ

아무튼, bcrypt말고 py-bcrypt라는 놈을 검거하였다!!

1️⃣ 검거된 저 친구를 삭제해준다.

pip uninstall py-bcrypt

2️⃣ 착했던 친구도 같이 삭제해준다.

pip uninstall bcrypt

3️⃣ 착했던 친구를 다시 설치해준다.

pip install bcrypt

👍 결론

일단 이렇게만 하면 이제 리턴값으로 bytes가 잘 나온다.

그리고 착했던 친구를 삭제했다가 다시 설치해주는 이유는 다음과 같다.

AttributeError: module 'bcrypt' has no attribute 'hashpw'

이러한 에러가 뜬다.

아무튼! 그래서 재설치를 해 준것이다.

profile
🐇 Rabbit can take a rest, but 🐢 turtle can't

0개의 댓글