본문 바로가기

BackEnd/Python-Flask

[백엔드] Flask: 비밀번호 처리 : 비밀번호 암호화

반응형

 

비밀번호는 암호화로 처리한다. 원리는 하기 이미지와 같다.

 

해당 기능을 사용하기 위해서는 우선적으로, vscode cmd 터미널에서 하기 라이브러리를 설치합니다.

pip install psycopg2-binary passlib

 

- 암호화 관련되서, 암호화 코드를 관리해줄 file을 생성한다. 해당 파일을 하나 생성하면, 어떤 서비스를 만들던지, 이 파일만 가져다놓으면 된다. 

- 파일 이름은 utils.py (utility 유용한 함수만 모아놓은 파일이라는 뜻)로 하고, 여기서 관리하자.

 

- 코드 생성 및 실행 시 실제 서비스가 진행되는 단계는: 회원가입 -> 이메일.비밀번호 -> 비밀번호 암호화

 

암호화 코드 예제: 

 
from passlib.hash import pbkdf2_sha256 
# 암호화 알고리즘. 256을 제일 많이 사용한다.

# 원문 비밀번호를, 암호화 하는 함수

def hash_password(original_password):
    salt = '1234'yh*hello12'
    password = original_password + salt
    password = pbkdf2_sha256.hash(password)
    return password

salt 변수에 담겨있는 내용은 seed값과 같으므로, 외부에 유출되지 않게 반드시 유의하여야한다.  

 

- 비밀번호는 암호화만 되어야지, 복구화가 되면 안된다.

- 암호화는 하되, 복구화는 하지 못하게 하는 것을 hash라고 한다.

 

salt라는 변수를 넣었는 데, 그 뜻은

내가 입력한 비밀번호: 1234
-> 문자열 추가 : '1234'yh*hello12'
-> 암호화: sfgfkghfdkjsu83h89jka3cnmxcmm
-> DB에 저장

-  우리가 만든 문자열을 만든걸 유저가 회원가입할 때 입력한 값 뒤에 붙여, 이걸 암호화 하면 다른 이상한 문자열이 나온다.

- 그럼 해커들이 암호를 알아도, 그 뒤에 어떤 문자열을 넣어야, 어떤 문자열로 암호화 되는지 모른다. 그게 hashed_password이다. 

- 1234뒤에 문자열을 붙여서, 그 pdkf2의 라이브러리를 사용해서 이상한 문자열로 생성하게 한다. 그리고 return 한다.

 

 

다음은 로그인 할 때 비밀번호 체크관련 포스팅이다.

반응형