본문 바로가기

공부 이야기

[python] hash 기능을 이용해서 password 관리하기

<해시 함수 동작 원리>

해시 함수를 사용하면 비가역적인 문자를 만들 수 있음

비밀번호에 대해 해싱된 값을 h비밀번호라고 하면 h비밀번호를 이용해서 원래의 비밀번호를 추론할 수 없다는 뜻임

실제 업무에서 비밀번호를 검증할 때 입력받은 비밀번호를 그대로 비교해서 검증하는 방식이 아님

해싱 처리된 h비밀번호가 일치하는지를 검증하는 방식임

해시 함수를 사용해서 처리한 해싱값을 해싱 키라고 함

입력받았던 원래 비밀번호와 당시 사용했던 해싱 키를 통해 연산을 한 후, h비밀번호가 일치하는지 검증함

 

<python 적용>

 python에서 해시 기능을 사용하기 위해서 bcrypt를 설치해야함 (pip install bcrypt)

먼저 입력받은 비밀번호를 utf-8로 인코딩함

인코딩 된 e비밀번호를 bcrypt의 hashpw 메소드를 이용해서 해싱처리가 된 h비밀번호를 만듬

이때 salt 옵션을 주게 되면 서로 다른 해싱키를 사용해서 같은 비밀번호라도 서로 다른 h비밀번호 값을 가지게 됨

hash_1과 hash_2의 값이 서로 다름을 확인할 수 있음

bcrypt의 checkpw 메소드를 사용하고 e비밀번호에 해싱된 값이 h비밀번호인지 검증할 수 있음