단방향 해시 함수는 원본 메시지를 변환하여 암호화된 메세지를 생성한다
원본 메시지를 알면 암호화되기전 원본 메시지를 알 수 있지만 암호화된메시지로 원본 메시지를 구할 수 없어서 단방향성(one-way) 이라고 한다.
해시되는 처리속도가 매우 빨라 이점을 악용해 미리 여러 문자들의 해시값을 구해놓은 Rainbow table attack에 취약하다.
또한 한 사용자의 비밀번호는 대부분 똑같거나 비슷하기 때문에 더욱 취약함
a = '1234'
a = a.encode('utf-8')
5.password 해시
hashed_pw = bcrypt.hashpw(a, bcrypt.gensalt() )
해시할 변수를 선언하고 그안에 bcrypt.hashpw 해시를 생성하는 함수에 인코딩된 인자 a 와 salt값을 추가 할 bcrypt.gensalt() 를 넣으면 Salt값이 추가된 해시된 비밀번호가 생성된다.
b'$2b$12$vYMsKVGrXez8pi3s8HDA5enSwInC/RB7Q0q8ubm2dwV7opATGu5P.'
DB에 저장시 디코딩 해서 저장해야함!
a='1234' #사용자가 입력한 패드워드
#hased_pw는 DB에 저장된 암호화된 패스워드
bcrypt.checkpw(a.encode('utf-8'), hashed_pw)
해쉬된 비밀번호가 일치하면 True
일치하지 않다면 False가 출력된다
DB에서 꺼내어 확인시에는 반드시 인코딩 하여 확인해야함!