๊ฐ์ฅ ๊ฐ๋ ฅํ ๋จ๋ฐฉํฅ ๋น๋ฐ๋ฒํธ ํด์ ๋งค์ปค๋์ฆ ์ค ํ๋๋ก
C, C++, C#, Go, Java, PHP, Perl, Python, Ruby๋ฑ์ ์ธ์ด๋ฅผ ์ง์ํ๋ค.
๋น๋ฐ๋ฒํธ๋ฅผ ๋จ๋ฐฉํฅ ์ํธํ ํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ํด์ฌํจ์์ด๋ฉฐ,
Salting & Key Stretching ๋ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก,
์์ ๋งํ๋ฏ์ด ๋ค์ํ ์ธ์ด๋ฅผ ์ง์ํ๊ณ ์๊ณ ์ฌ์ฉ์ด ๊ฐํธํ์ฌ ์ฝ๊ฒ ์ ์ฉ์ด ๊ฐ๋ฅํ๋ค.
bcrypt๋ hash๊ฒฐ๊ณผ๊ฐ์ ์๊ธ๊ฐ๊ณผ ํด์๊ฐ ๋ฐ ๋ฐ๋ณตํ์๋ฅผ ๊ฐ์ด ๋ณด๊ดํ๊ธฐ ๋๋ฌธ์ ๋น๋ฐ๋ฒํธ ํด
์ฑ์ ์ ์ฉํ๋๋ฐ ์์ด DB์ค๊ณ๋ฅผ ๋ณต์กํ๊ฒ ํ ํ์๊ฐ ์๋ค.
In [40]: import bcrypt
In [41]: bcrypt.hashpw(b"secrete password", bcrypt.gensalt())
Out[41]: b'$2b$12$.XIJKgAepSrI5ghrJUaJa.ogLHJHLyY8ikIC.7gDoUMkaMfzNhGo6'
In [42]: bcrypt.hashpw(b"secrete password", bcrypt.gensalt()).hex()
Out[42]: '243262243132242e6b426f39757a69666e344f563852694a43666b5165445469397448446c4d366635613542396847366d5132446d62744b70357353'
๋จ๋ฐฉํฅ ํด์ฌ ํจ์์ ์ทจ์ฝ์ ๋ค์ ๋ณด์ํ๊ธฐ ์ํด ์ผ๋ฐ์ ์ผ๋ก 2๊ฐ์ง ๋ณด์์ ๋ค์ด ์ฌ์ฉ๋๋ค.
์ค์ ๋น๋ฐ๋ฒํธ ์ด์ธ์ ์ถ๊ฐ์ ์ผ๋ก ๋๋ค ๋ฐ์ดํฐ(์์์ ๋ฌธ์์ด)๋ฅผ ๋ํ์ฌ ํด์๊ฐ์ ๊ณ์ฐ
๋จ๋ฐฉํฅ ํด์ฌ๊ฐ์ ๊ณ์ฐํ ํ ๊ทธ ํด์ฌ๊ฐ์ ๋ ํด์ฌํ๊ณ , ๋ ๋ฐ๋ณตํ๋ ๊ฒ์ ๋งํ๋ค.
ํด์ฌ๋ฅผ ๋ฐ๋ณตํ ์๋ก ํดํนํ๋๋ฐ์ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฐ๋ค.
ex) ๋ชธ ์คํธ๋ ์นญ ํ๋ฏ์ด ๋๋ฆฐ๋ค๊ณ ์๊ฐํ๋ฉด ์ฌ์