Thursday_July_16
.
.
.
์ธ์ฆ๊ณผ ์ธ๊ฐ๋ ํ์ชฝ ์ธก๋ฉด์์ ๋ด๋นํ๋ ๊ฒ์ด ์๋
'ํ๋ก ํธ์๋'์ '๋ฐฑ์๋' ๊ฐ์ ์ํธ ์์ฉ์ด๋ผ๊ณ ํ๋ค.
๊ทธ ์ค์์ '๋ฐฑ์๋' ์ธก๋ฉด์์์ ์ธ์ฆ๊ณผ ์ธ๊ฐ๋ฅผ ๊ตฌํํ๊ธฐ ์ํ ๊ธ์ด๋ค.
๊ตฌํํ๊ธฐ ์ , ๋จผ์ ๊ฐ์ธ์ ๋ณด๋ฅผ ํ์์ ์ผ๋ก ๋ณดํธํ๊ธฐ ์ํด '๋น๋ฐ๋ฒํธ ์ํธํ'๋ฅผ ํด์ผํ๋ค.
์ด ๊ธ์์๋ ์ํธํ๋ฅผ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก Bcrypt๋ฅผ ์ค์น ํ ์์ ์ด๋ค.
์ค์นํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
pip install bcrypt
์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
import bcrypt
์ด๋ ๊ฒ import๋ฅผ ํด์ฃผ๋ฉด ๋๋ค.
Bcrypt๋ 'str'๋ฐ์ดํฐ๊ฐ ์๋ 'bytes' ๋ฐ์ดํฐ๋ฅผ ์ํธํ ํ๋ค.
๊ทธ ๋ง์ ์ฆ, ์ํธํ๋ฅผ ํ๊ณ ์ถ๋ค๋ฉด 'bytes' ํํ๋ก ๋ง๋ค์ด ์ค์ผ ์ํธํ๋ฅผ ํ ์ ์๋ค๋ ๋ง์ด๋ค.ํ์ง๋ง ๊ฑฑ์ ํ์ง ์์๋ ๋๋ค. ํ์ด์ฌ์์๋
'str'์ encode ํ๋ฉด 'bytes'๊ฐ ๋๊ณ ,
'bytes'๋ฅผ decode 'str'๊ฐ ๋๋ค.encode, decode๋ฅผ ํ ๋๋, ์ฐ๋ฆฌ๊ฐ ์ธ์ํ ์ ์๋๋ก
ํํ๋ฅผ ๋ณํํ๊ธฐ ์ํด 'UTF-8' ์ ๋์ฝ๋ ๋ฌธ์ ๊ท๊ฒฉ์ ์ฌ์ฉํ๋ค.์ ๊ทธ๋ผ password๋ฅผ ์ํธํ ํด๋ณด์.
password = '1234' hashed_password = bcrypt.hashpw(password.encode('UTF-8'), bcrypt.gensalt()) print(type(hashed_password)) print(hashed_password)
๊ฒฐ๊ณผ๊ฐ
<class 'bytes'> b'$2b$12$tUcszX4gTh4QnLqmogi4SeUTjWbJ4graSXdtvyBss//AXM9.A9bDy'
ํ์
์ 'bytes' ํ์
์ด๊ณ
์ํธํ๋ ์ ๋์๋ค.
์ด ๋ฐฉ์์ '์ผ๋ฐฉํฅ' ์ํธํ, ์ฆ ๋ณตํธํ๋ฅผ ํ ์ ์๋๋ก ์ํธํ๋ฅผ ํ๋ ๋ฐฉ์์ด๋ค.
๊ทธ๋ผ ํ๋ก ํธ์ชฝ์์ ๋ฐ์ ๋น๋ฐ๋ฒํธ๋ ์ด๋ป๊ฒ ํ์ธ ํ ์ ์์๊น์?
๊ทธ๊ฒ ๋ํ bcrypt๊ฐ ์ง์์ ํด์ค๋๋ค ๐คฉ
bcrypt์๋ checkpw() ๋ผ๋ ํจ์๊ฐ ์์ต๋๋ค.
์์ ๋ฅผ ํตํด ์์๋ด
์๋ค.
bring_password = '1234' a = bcrypt.checkpw(bring_password.encode('UTF-8'), hashed_password) print(a)
๊ฒฐ๊ณผ๊ฐ
True
์ด checkpw() ํจ์์
์ฒซ ๋ฒ์งธ argument = ์
๋ ฅ๋ฐ์ ํจ์ค์๋
๋ ๋ฒ์งธ argument = ์ ์ฅ๋ ์ํธํ๋ ํจ์ค์๋
์ด์ด์ผ ํ๊ณ , ๋ชจ๋ ํ์ ์ 'bytes'์ฌ์ผ ํ๋ค.