지금까지의 작업에서 유저들의 비밀번호를 string으로 받아 곧바로 DB에 저장해왔다. 이런식으로...!
이렇게되면, DB에는 비밀번호가 직접적으로 저장이되고, DB관리자나 DB에 접근할 수 있는 사람들은 유저들의 정보에 접근할 수 있는 위험이 있는 것이다.
이러한 이유로!
비밀번호를 꼭 암호화시켜서 다루는데, 비밀번호를 암호화하는 과정에서 "bcrypt"를 사용해 볼 수 있다!
Install 우선 설치!
pip install bcrypt
hashpw()
import bcrypt
password = '1234'
encoded_pw = password.encode('utf-8') # encoding한 문자열
# password hashing
salt = bcrypt.gensalt()
hashed_pw = bcrypt.hashpaw(password.encode('utf-8'), salt)
그런데, 실제로 이렇게 아래와 같이 해버리면,
에러가 나버림......
에러가 나는 이유는?
그렇기때문에 저 위에서처럼 .encode('utf-8') 를 붙여주어야 하는 것!!
타입을 확인해보면,
>>> type(hashed_pw1)
<class 'bytes'>
여기서 중요한 점은!!!
이렇게 받은 hash가 된 비밀번호는 byte이다. 데이터베이스에 저장할때는 이를 decode 해주어 string으로 저장해야한다.
>>> hashed_decoded_pw1 = hashed_pw1.decode('utf-8')
>>> type(hashed_decoded_pw1)
<class 'str'>
*westagram 클론 코딩 과제를 계속해서 열심히 해보자^^!