해시 함수.
아마 프로그램 좀 만져 본 사람이면 지겹도록 들었을 거다.
간단히 말해서 함숫값의 길이가 한정되어 있는 함수다.
함수는 본질적으로 숫자를 넣으면 다른 수가 튀어나오는 자판기와 같다.
여기서 함숫값이 늘 특정 범위 안에서만 나오는 함수가 바로 해시 함수다.
예를 들어 숫자를 넣으면 그 숫자의 1의 자리와 10의 자리의 수를 더한 값을 내놓는 프로그램이 있다 치자.
그럼 1을 넣으면 1, 67을 넣으면 13, 94818109을 넣으면 9가 나온다.
넣을 수 있는 변수는 무한하지만 함숫값은 늘 0에서 18 사이이니 이건 해시 함수로 볼 수도 있다.
물론 실제 해시 함수는 훨씬 복잡하다. 함숫값을 보고 변수를 추측하는 걸 막아야 하거든.
해시 함수는 치역은 한정되어 있는데 정의역이 무한히 크므로,
반드시 변수가 달라도 같은 함숫값이 나오는 충돌이 발생하게 된다.
그래서 오늘도 수학자들과 프로그래머들은 충돌이 없고 변수를 알아내기가 불가능한 해시함수를 찾기 위해 노력 중이다.
그리고 해시 함수가 가장 중요하게 작용하는 분야 중 하나가 이거다.
뜬금없지만 롯데리아에 해시브라운하고 패티 얇은거 들어가는 가성비 버거가 맛있었는데
리만가설이 저 암호학에서도 중요했댔던가
리만과 관련있는건 비대칭암호쪽