Flask-bcrypyt
in Flask
๐ก ๋น๋ฐ๋ฒํธ ์์ ํ๊ฒ ์ ์ฅํ๊ธฐ
์ํธ๋ฅผ ์๋ ๊ทธ๋๋ก DB์ ์ ์ฅํ๋ฉด ๋ณด์์ ๋ฌธ์ ๊ฐ ์๊ธด๋ค.
๊ทธ๋์ ์ค๋์ Flask-bcrpyt๋ฅผ ์ฌ์ฉํด๋ดค๋ค.
# __init__.py
from flask_bcrypt import Bcrypt
bcrypt = Bcrypt()
def create_app():
app = Flask(__name__)
#bcrypt
bcrypt.init_app(app)
return app
password = "test"
# ์ํธํ
encrypted_password = bcrypt.hashpw(password.encode("utf-8"), bcrypt.gensalt())
#=> b'$2b$12$/vf/wF1/4dMU1G5OV.RrSOl6YwG1HyXr/xt05tiH9oMxsJShb7QZm'
# db์ ์ ์ฅํ ๋๋ strํํ๋ก ์ ์ฅ.
encrypted_password.decode("utf-8")
#=> $2b$12$/vf/wF1/4dMU1G5OV.RrSOl6YwG1HyXr/xt05tiH9oMxsJShb7QZm
๐ก 12.22 ์ถ๊ฐ ๋ด์ฉ
์ถ๊ฐ์ ์ผ๋ก check_password_hash๋ฅผ ์ฌ์ฉํด์ ๋ก๊ทธ์ธ์ ์ํธ๊ฐ ๋ง๋์ง ์๋์ง ํ์ธํ ๋์๋
์๋์ ๊ฐ์ด ํ์ธํด ์ค๋ค. ๋ฐํ ๊ฐ์ True ํน์ False ์๋ค.
# db์ strํํ๋ ์ ์ฅ๋์ด ์๋ ๋น๋ฐ๋ฒํธ
db_password = '$2b$12$/vf/wF1/4dMU1G5OV.RrSOl6YwG1HyXr/xt05tiH9oMxsJShb7QZm'
# (str โ byte-string)
db_password = bytes(db_password, encoding = "utf-8")
#=> b'$2b$12$/vf/wF1/4dMU1G5OV.RrSOl6YwG1HyXr/xt05tiH9oMxsJShb7QZm'
# ๋ก๊ทธ์ธ์ ์
๋ ฅํ ๋น๋ฐ๋ฒํธ์ DB์ ์ ์ฅ๋์ด ์๋ ๋น๋ฐ๋ฒํธ ๋น๊ต.
bcrypt.chect_password_hash(input_pw.encode('utf-8'), db_password)
#=> True
๊ทธ๋ฆฌ๊ณ ์ฒซ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ์, ๋ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ ๋ชจ๋ byte-string์ ๋ฃ์ด์ฃผ์ด์ผ ํ๋ค.
ํ๋ ์ค์ : byte-string์ ๋ฃ์ด์ฃผ์ง ์์.