MapleStory Finger Point

๐ŸŸค JAVA/๐ŸŸค Spring

[Spring Security] BCryptPasswordEncoder ํด๋ž˜์Šค

HYEJU01 2024. 11. 29. 18:20

[ ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™” ]

 

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)`

์•”ํ˜ธํ™”๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋” ๊ฐ•๋ ฅํ•œ ๋น„์šฉ ํŒฉํ„ฐ๋กœ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•œ์ง€ ํ™•์ธํ•˜๋Š” ๋ฉ”์„œ๋“œ