๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ณด์•ˆ

์•”ํ˜ธํ™” ํ•ด์‹œ ํ•จ์ˆ˜

์•”ํ˜ธํ™” ํ•ด์‹œ ํ•จ์ˆ˜

์•”ํ˜ธํ™” ํ•ด์‹œ ํ•จ์ˆ˜(Crypto Hash Function)์„ ์•Œ์•„๋ณด๊ณ  ์ด๋ฅผ ์Šคํ”„๋ง ๋ถ€ํŠธ์— ์‚ฌ์šฉํ•ด๋ณด์ž.

ํ•ด์‹œ ํ•จ์ˆ˜๋ž€?

ํ•ด์‹œ ํ•จ์ˆ˜๋ž€ x๋ผ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์œผ๋ฉด ์ด ๋ฐ์ดํ„ฐ๋ณด๋‹ค ์ž‘์€ ํฌ๊ธฐ์˜ ๋ฐ์ดํ„ฐ์ธ h(x)๋กœ ๋งคํ•‘ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜๋ฅผ ๋งํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ ๋งคํ•‘์œผ๋กœ ์ถœ๋ ฅ ๋œ ๋ฐ์ดํ„ฐ๋Š” ์ธ์ž์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์•ผ ํ•˜๋ฉฐ, ์›๋ž˜์˜ ๋ฐ์ดํ„ฐ๋ณด๋‹ค ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ๊ณ ์ •๋œ ๊ธธ์ด๋กœ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•˜๋ฉฐ, ์›๋ž˜ ๋ฐ์ดํ„ฐ์˜ ์ง€๋ฌธ๊ณผ ๊ฐ™์€ ์—ญํ• ์„ ํ•œ๋‹ค.

์•”ํ˜ธํ™” ํ•ด์‹œ ํ•จ์ˆ˜

์•”ํ˜ธํ™” ํ•ด์‹œ ํ•จ์ˆ˜๋Š” ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์•”ํ˜ธํ™”์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“  ํ•จ์ˆ˜๋ฅผ ๋งํ•œ๋‹ค.

์ด๋•Œ ํ•ด์‹œ ํ•จ์ˆ˜์˜ ๊ฐ’์œผ๋กœ๋ถ€ํ„ฐ ์›๋ž˜์˜ ์••๋ ฅ ๊ฐ’์„ ์ฐพ๊ธฐ ์–ด๋ ค์›Œ์•ผ ํ•˜๊ณ  ๋‹ค์Œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค.

  • output์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘์•„์•ผ ํ•œ๋‹ค.
  • output์„ ๊ตฌํ•˜๊ธฐ ์ˆ˜์›”ํ•ด์•ผ ํ•œ๋‹ค.(์—ฐ์‚ฐ์ด ํšจ์œจ์ ์ด์•ผ ํ•œ๋‹ค.)
  • ์•ฝํ•œ ์ถฉ๋Œ ์ €ํ•ญ์„ฑ
    • x์™€ output์ธ h(x)๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, h(y) = h(x)์ด๋ฉฐ y์™€ x๊ฐ€ ๊ฐ™์ง€ ์•Š์€ y๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์–ด์•ผ ํ•œ๋‹ค.
  • ๊ฐ•ํ•œ ์ถฉ๋Œ ์ €ํ•ญ์„ฑ
    • x์™€ y๊ฐ€ ๋‹ค๋ฅด๋ฉด์„œ h(x) = h(y)์ธ x, y๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์–ด์•ผ ํ•œ๋‹ค.

์Šคํ”„๋ง ๋ถ€ํŠธ ์‹ค์Šต

SpringConfig

WebSecurityConfigurerAdapter์„ ์ƒ์†ํ•˜๋Š” SpringConfig๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž.

๋นˆ ๋“ฑ๋ก

@Bean
public BCryptPasswordEncoder pwdEncode(){
return new BCryptPasswordEncoder();
};

์•”ํ˜ธํ™” ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ด ์ฃผ๋Š” BCryptPasswordEncoder ๊ฐ์ฒด๋ฅผ Bean ๋“ฑ๋กํ•ด ์ค€๋‹ค.

BCryptPasswordEncoder ์‚ฌ์šฉ

String rawPassword = userJoinDto.getPassword();
String encPassword = bCryptPasswordEncoder.encode(rawPassword);

ํšŒ์›์ด ๋“ฑ๋ก๋  ๋•Œ ์š”์ฒญ๋ฐ›์€ password๋ฅผ ์œ„์™€ ๊ฐ™์ด ํ•ด์‹œ ์•”ํ˜ธํ™”๋กœ ๋ณ€๊ฒฝํ•ด์„œ ํšŒ์› ๋ฐ์ดํ„ฐ์— ์ €์žฅํ•ด ์ค€๋‹ค.

ํด๋ผ์ด์–ธํŠธ ํšŒ์› ๊ฐ€์ž…

๋งŒ๋“ค์–ด ๋‘” ํšŒ์›๊ฐ€์ž… ํผ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ธฐ์ž…ํ•˜์ž.

์ด๋•Œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ "1"์ด๋ผ๊ณ  ์ž…๋ ฅํ•œ๋‹ค.

DB ์กฐํšŒ


์ž…๋ ฅํ–ˆ๋˜ 1์ด ํ•ด์‹œ ์•”ํ˜ธํ™”๋˜์–ด ์ €์žฅ๋œ ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

'๋ณด์•ˆ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์ฟ ํ‚ค-์„ธ์…˜, JWT ํ† ํฐ ์ธ์ฆ  (0) 2022.03.17
Bcrypt ์ธ์ฝ”๋”ฉ  (0) 2022.03.15
A5/1 แ„€แ…ฎแ„’แ…งแ†ซ(C++)  (0) 2022.03.13