API 개발/Restful API

Restful API : 회원 관리 API를 위한 pbkdf2_sha256으로 비밀번호 암호화시키기

신강희 2024. 5. 24. 12:14
728x90

< 회원 관리 API를 위한 pbkdf2_sha256으로 비밀번호 암호화시키기 >

 

# 회원 관리 API에서 비밀번호를 안전하게 관리하기 위한 pbkdf2_sha256 해시 알고리즘을 사용

- pbkdf2_sha256는 안전한 해시 함수로, 암호화된 비밀번호를 저장하고 검증하는 데 사용된다.

 

# 암호화를 사용하기 위해 인스톨을 먼저 진행

pip install psycopg2-binary
pip install passlib

 

# 비밀번호 관리를 용이하게 하기 위해 utils.py라는 파일을 새로 생성하여 코드 작성!

 
# 라이브러리를 모두 설치하였으므로 이제 import

# 해쉬 알고리즘 (단방향 암호화)
from config import Config
from passlib.hash import pbkdf2_sha256

# 원문 비밀번호를, 단방향으로 암호화 하는 함수
# 랜덤이더라도 시드값을 알면 패턴이 똑같음 그러므로 각 회사마다 고유한 문자열을 암호화에 추가해 준다. (이 고유값은 절대 유출되면 안됨)
# 그래서 이 고유값은 config.py 에서 따로 변수로 지정하여 관리한다 SALT
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)

# 이제 생성한 함수를 테스트
hashed_password = hash_password('1234')
print(hashed_password)

# 암호화된 비밀번호를 파라미터 안에 작성하여 check
check = check_password('1234','$pbkdf2-sha256$29000$0Pp/T4nRGgOAsLa21lor5Q$LevPxDCYb7bddkgCgf8zGbJzYCMJO3IVrI5trLIlAtg')
print (check)
 

 

# 동일한 패턴으로 암호화가 될수있어 시드값을 지정하여 SALT 변수로 암호화 하여 활용

- 보안 관리용 파일인 config.py에 작성하여 관리 SALT


class Config :
    # 대문자로 적는 이유는 바뀌지 않는 상수를 뜻하기 위해
    # 앞으로는 접속 ID / PW 는 config로 관리 이 파일은 GIT hub에 올리면 안됨
    HOST = 'yh-db.cp46dfdfk4u1po.ap-northeast-2.rds.amazonaws.com'
    DATABASE = 'recipe_db'
    DB_USER = 'recipe_db_user'
    DB_PASSWORD = '45440'

    # 실무에서 이 키값은 절대 노출되면 안됨
    # 실습에선 임의로 막 작성하여도 되지만 실무에선 지정된 키값이 있을것
    SALT = 'sad;klfjsdlkf12&#$&#fj'

 

다음 게시글로 계속~!

 

반응형