본문 바로가기

RestfulAPI

RestfulAPI Hashing 을 이용하여 단방향 암호화 하는방법

해싱 알고리즘 이해하기

해싱 알고리즘은 암호화부터 데이터 무결성 확인에 이르기까지 컴퓨터 과학의 다양한 분야에서 필수적이다. 이 블로그 포스트에서는 해싱 알고리즘이 무엇인지, 어떻게 작동하는지, 그리고 몇 가지 일반적인 사용 사례에 대해 살펴볼 것이다.

해싱 알고리즘이란?

해싱 알고리즘은 입력값(또는 '메시지')을 받아 고정된 크기의 문자열을 반환하는 함수이다. 이 출력값은 보통 해시 코드, 해시 값, 또는 간단히 해시라고 불린다. 각기 다른 입력값은 서로 다른 해시 값을 생성하지만, 동일한 입력값은 항상 동일한 해시 값을 생성한다.

해싱 알고리즘의 주요 특성

해싱 알고리즘은 다음과 같은 주요 특성을 갖는다:

  • 결정론적: 동일한 입력값은 항상 동일한 해시 값을 생성한다.
  • 고속성: 해시 함수를 계산하는 데 걸리는 시간은 입력값의 크기에 관계없이 매우 빠르다.
  • 충돌 저항성: 두 개의 서로 다른 입력값이 동일한 해시 값을 갖는 경우는 매우 드물다.
  • 단방향성: 해시 값으로부터 원래 입력값을 복구하는 것은 불가능하다.

먼저 필요 라이브러리들을 전부 다운 받는다.

pip install email-validator

pip install passlib

pip install psycopg2-binary

그 다음 SALT 값을 정해주는데 노출되면 안되고 아무거나 적어주면 된다.

config.py 에서 SALT 암호화정보 설정해주고

class Config :
    HOST = '호스트'
    DATABASE = '데이터베이스'
    DB_USER = 'DB이름'
    DB_PASSWORD = 'DB패스워드'
    SALT = '암호화정보'

utils.py 에서 비밀번호 암호화 및 체크 해보면 된다.

from passlib.hash import pbkdf2_sha256

# Config 클래스를 정의합니다.
class Config:
    SALT = "your_salt_value"

# 원문 비밀번호를 단방향으로 암호화하는 함수
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)