๐Ÿ— TS/Bcrypt๋ฅผ ์ด์šฉํ•˜์—ฌ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•ด์‰ฌํ™”(์•”ํ˜ธ)

JunSeokยท2022๋…„ 6์›” 25์ผ
0
post-thumbnail

์ด๋ฏธ์ง€ ์ถœ์ฒ˜

Bcrypt๋Š” node.js์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•ด์‰ฌํ™”๋ฅผ ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค.

ํ•ด์‰ฌํ™”๋Š” ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ํ•ด์‰ฌ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•˜์—ฌ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•”ํ˜ธํ™”์‹œํ‚จ๋‹ค. ๋‹จ๋ฐฉํ–ฅ์ด๋ฏ€๋กœ ๋ณต๊ตฌ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
์•”ํ˜ธํ™”๋Š” ์–‘๋ฐฉํ–ฅ์œผ๋กœ ๋ณต๊ตฌ ๊ฐ€๋Šฅํ•˜๋‹ค.

๊ณต์‹๋ฌธ์„œ

์„ค์น˜

		npm install -D bcrypt
        
        npm install -D @types/bcrypt // ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ

์‚ฌ์šฉ(๊ณต์‹๋ฌธ์„œ์—์„œ async&await์„ ๊ถŒ์žฅํ•œ๋‹ค.)

		import bcrypt from 'bcrypt'
        
		const hashing = async () => {
        	const password = "cloud1589"
            const saltRound = 10
        	const salt = await bcrypt.genSalt(saltRound) 
        	// genSlat() ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ์†Œ๊ธˆ ์ƒ์„ฑ
        	// ๋น„๋™๊ธฐ ๋ฐฉ์‹ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„ฃ์€ 10์€ ์•”ํ˜ธํ™”์— ์‚ฌ์šฉ๋˜๋Š” saltOrRounds๋กœ, ๊ฐ’์ด ๋†’์„์ˆ˜๋ก ์•”ํ˜ธํ™” ์—ฐ์‚ฐ์ด ์ฆ๊ฐ€ํ•œ๋‹ค. 
        	// ํ•˜์ง€๋งŒ ๊ทธ๋งŒํผ ์†๋„๊ฐ€ ๋Š๋ ค์ง„๋‹ค.
        
        	const hashedPassword = await bcrypt.hash(password, salt) // password ํ•ด์‰ฌํ™” ์™„์„ฑ
        
        	// ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ•ด์‰ฌํ™”ํ•˜์—ฌ, ์ดํ›„ DB์—๋Š” ํ•ด์‰ฌํ•œ ์•”ํ˜ธ๋ฅผ ์ €์žฅํ•œ๋‹ค.
        }
		

๋น„๋ฐ€๋ฒˆํ˜ธ ๊ฒ€์ฆ(compare)

์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ ํ•  ๋•Œ, ์ž…๋ ฅ๋ฐ›์€ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ DB์— ์ €์žฅ๋œ ํ•ด์‰ฌํ™”๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋น„๊ตํ•˜์—ฌ true๊ฐ€ ๋‚˜์˜ค๋ฉด ๋กœ๊ทธ์ธ์„ ์„ฑ๊ณต์‹œํ‚จ๋‹ค.

		import bcrypt from 'bcrypt'

		const check = await bcrypt.compare(password, hashedPassword)
            
        if(check) {
            console.log('๋กœ๊ทธ์ธ!')
        } else {
            console.log('์‹คํŒจ')		
        }

๊ณต๊ฒฉ์ž๊ฐ€ ์•”ํ˜ธ๋ฅผ ์œ ์ถ”ํ•  ์ˆ˜ ์—†๋„๋ก, ํ‰๋ฌธ ๋ฐ์ดํ„ฐ์— ์˜๋ฏธ ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฟŒ๋ ค ๋„ฃ๋Š”๋ฐ, ์ด๊ฒƒ์„ salt๋ผ๊ณ  ํ•œ๋‹ค.


์—๋Ÿฌ๊ฐ€๋Šฅ์„ฑ

  1. ํ•ด์‰ฌํ™”๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ DB์— ์ €์žฅํ•˜๋Š”๋ฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

"data too long!"
์ด๋•Œ๋Š” DB password์˜ length๋ฅผ ๋Š˜๋ ค์ฃผ๋ฉด ๋œ๋‹ค.

  1. ๋น„๋ฐ€๋ฒˆํ˜ธ compare ๊ณผ์ •์—์„œ, DB์—์„œ hashed๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ ๋ฐฐ์—ด๋กœ ๋ฆฌํ„ด๋˜๋‹ˆ, ๋ฐ”๋กœ ์ธ์ž๊ฐ’์œผ๋กœ ์“ฐ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด console.log๋กœ ์ฐ์–ด๋ณด๋Š” ์Šต๊ด€์„ ๊ฐ€์ง€์ž!

Reference

ha0.log ๐Ÿ’
๊พธ์ƒ์˜ DevLog
EasyEasy
limsw.log

profile
์ตœ์„ ์„ ๋‹คํ•œ๋‹ค๋Š” ๊ฒƒ์€ ํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ ๊ฐ€์žฅ ํ•ต์‹ฌ์„ ํ–ฅํ•œ๋‹ค๋Š” ๊ฒƒ

0๊ฐœ์˜ ๋Œ“๊ธ€