[ ์คํ๋ง ์ํ๋ฆฌํฐ ๋น๋ฐ๋ฒํธ ์ํธํ ]
BCryptPasswordEncoder ๋ ์คํ๋ง ์ํ๋ฆฌํฐ(ํ๋ ์์ํฌ) ์์ ์ ๊ณตํ๋ ํด๋์ค
๋จ๋ฐฉํฅ ํด์ ํจ์์ธ BCrypt ๋ฅผ ์ฌ์ฉํ๋ค.
BCrypt ์ ๊ฒฝ์ฐ์๋ ์ํธ(salt) ๋ฅผ ๋ถ์ฌํ์ฌ ํด์ฑํ๋ค.
๋ก๊ทธ๋ผ์ด๋ = ๊ฐ๋ (strength)๋ฅผ ์ค์ ํ ์ ์๋๋ฐ ์ํธ๋ฅผ ํด์ ํ๊ธฐ ์ํ ์์ ์ํ ์ ๋์ด๋ค. (๊ธฐ๋ณธ๊ฐ 10)
BCryptPasswordEncoder ํด๋์ค์๋
์ํธํ๋์ด ์ ์ฅ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ํ์ธํ๋ ๋ฉ์๋๋ฅผ ์ ๊ณตํจ
[ BCryptPasswordEncoder ํด๋์ค์ ๋ฉ์๋ ์ข ๋ฅ ]
1. `String encode(CharSequence rawPassword)`
ํจ์ค์๋ ์ํธํ ๋ฉ์๋ (์๋ณธ ๋น๋ฐ๋ฒํธ๋ฅผ ํด์ฑ)
2. `boolean matches(CharSequence rawPassword, String encodedPassword)`
์ํธ๊ฐ ์ผ์นํ๋์ง ํ์ธํด์ฃผ๋ ๋ฉ์๋
(์ ์ฅ๋ ๋น๋ฐ๋ฒํธ ์์ฒด๊ฐ ๋์ฝ๋ฉ ๋์ง ์๋๋ค!!)
>์ํธํ๋ ๋น๋ฐ๋ฒํธ์์ (salt, cost factor ์ถ์ถ)
>์ ๋ ฅ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ๋์ผํ ๋ฐฉ์์ผ๋ก ํด์ฑ
> ๊ฒฐ๊ณผ๊ฐ ๋น๊ตํ boolean ๊ฐ ๋ฐํ
3. `boolean upgradeEncoding(String encodedPassword)`
์ํธํ๋ ๋น๋ฐ๋ฒํธ๊ฐ ๋ ๊ฐ๋ ฅํ ๋น์ฉ ํฉํฐ๋ก ์ ๋ฐ์ดํธ๊ฐ ํ์ํ์ง ํ์ธํ๋ ๋ฉ์๋