최초 23/10/27
사이트에 로그인할 때 id와 password가 서로 부합하는지 확인해야 하는데 password를 그대로 DB에 저장한다면 만약 DB가 해킹당하는 경우 해커는 탈취한 password를 이용해서 로그인 할수 있게됨.
id와의 부합 여부를 확인하는데 password 원본 대신 password의 mapping값을 이용하면 (id, pw) 대신 (id, h(pw))를 DB에 저장함. 로그인을 위해 password가 건너오면 해당 mapping값을 구해서 DB에 저장된 값과 비교함. 따라서 올바른 password가 건너오면 id와 부합하는 판정을 함.

그리고 DB에 저장된 password의 mapping값이 탈취당하더라도 인증 과정에선 여전히 password를 요구하므로 탈취한 mapping값을 로그인에 이용할수 없음.
이 때 문제는 특정 mapping값에 서로 다른 값이 map되는 경우임. 이럴 경우 다른 password를 입력해도 id와 password가 부합하다는 판정을 내림. 따라서 map은 다음과 같은 1:1 mapping을 만족해야함.

hash 함수는 이론적으로 1:1 mapping 을 만족하며 mapping값을 보고 원본값을 추측할 수 없는 특징이 있음. 따라서 위 목적에 부합하는 map으로 hash 함수가 쓰임.