RestFul API

Hashing ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ๋‹จ๋ฐฉํ–ฅ ์•”ํ˜ธํ™” ์‹คํ–‰ํ•˜๊ธฐ : utils ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ

567Rabbit 2024. 5. 22. 10:00

Hashing ์•Œ๊ณ ๋ฆฌ์ฆ˜

 

- Hashing์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹จ๋ฐฉํ–ฅ ์•”ํ˜ธํ™”๋กœ,

 

- ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ด์‹œ๊ฐ’์œผ๋กœ๋ถ€ํ„ฐ ๋ณต์›ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๋ณด์•ˆ์ด ์ค‘์š”ํ•œ ๋ถ„์•ผ์—์„œ ๋งŽ์ด ํ™œ์šฉ๋œ๋‹ค.

 

- ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์‚ฌ, ๋น„๋ฐ€๋ฒˆํ˜ธ ์ €์žฅ, ๋””์ง€ํ„ธ ์„œ๋ช…, ๋ธ”๋ก์ฒด์ธ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.

 

 


vscode ํ„ฐ๋ฏธ๋„ cmd์—์„œ ์„ค์น˜ํ•˜๊ธฐ

pip install email-validator

pip install passlib

pip install psycopg2-binary

 

 

 

 

SALT๋ฅผ config ํŒŒ์ผ์— ๋งŒ๋“ ๋‹ค. (SALT๋Š” random_state์™€ ๋น„์Šทํ•œ ๊ฐœ๋…์œผ๋กœ, ๋…ธ์ถœ๋˜๋ฉด ํ•ดํ‚น๋  ์ˆ˜ ์žˆ๋‹ค.)

SALT๋Š” ๋ณธ์ธ์ด ์›ํ•˜๋Š”๋Œ€๋กœ ์•„๋ฌด๋ ‡๊ฒŒ๋‚˜ ์ง€์ •ํ•˜๋ฉด ๋œ๋‹ค

 

 

 

 

utils.py ๋งŒ๋“ค๊ธฐ

from passlib.hash import pbkdf2_sha256
from config import Config

# ์›๋ฌธ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ, ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ์•”ํ˜ธํ™”ํ•˜๋Š” ํ•จ์ˆ˜
def hash_password(original_password) :
    original_password = original_password + Config.SALT
    password = pbkdf2_sha256.hash(original_password)
    return password
    
# ์œ ์ €๊ฐ€ ๋กœ๊ทธ์ธํ•  ๋•Œ ์ž…๋ ฅํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋งž๋Š”์ง€ ์ฒดํฌ(๋ณตํ˜ธํ™”)ํ•˜๋Š” ํ•จ์ˆ˜ 
def check_password(original_password, hashed_password) :
    original_password = original_password + Config.SALT
    return pbkdf2_sha256.verify(original_password, hashed_password)

 

 

 

๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅํ•˜๊ณ , ์‹คํ–‰์‹œํ‚ค๋ฉด(python utils.py) 1234๋ฅผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ๋งŒ๋“ ๋‹ค.

hashed_password = hash_password('1234')
print(hashed_password)

 

 

 

๋ณต์‚ฌํ•ด์„œ, ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฒดํฌํ•˜๋Š” ์‹คํ–‰๋ฌธ ๋งŒ๋“ค๊ธฐ

check = check_password('1235', '$pbkdf2-sha256$29000$936P8T7nfK/13rvXmnMOYQ$45uMcjbt6Cg4hDHbsJs3tuR7abOJ4j8Wfczblc5FC9E')
print(check)