문자열을 수로 나타내기
문자를 수로 바꾸고 위치에 따라 가중치를 주어 하나의 해시를 계산할 수 있다. 모든 문자를 매번 비교하는 대신 이미 계산한 해시를 비교하면 많은 비교 작업을 줄일 수 있다. 다만 해시를 처음 계산하는 비용이 사라지는 것은 아니며, 같은 문자 인코딩과 계산 규칙을 사용해야 한다.
접두 해시와 구간 계산
한 가지 다항식 방식은 H[0]=0, H[i+1]=(bH[i]+c[i]) mod q로 접두 해시를 저장한다. b는 밑이고 q는 나머지 연산의 기준이다. 이 정의에서는 구간 [l,r)의 해시를 H[r]−H[l]b^(r−l)을 q로 나눈 나머지로 얻는다. 거듭제곱을 미리 저장하면 각 구간의 해시를 일정한 연산 수로 계산한다.
충돌을 이해하는 예
각 문자의 숫자를 단순히 합하는 해시에서는 ab와 ba의 값이 같다. 문자열의 순서는 다른데 같은 값으로 대응된 것이다. 위치를 반영하는 다항식 해시도 유한한 수의 값만 사용하면 일반적으로 충돌을 완전히 피할 수 없다. 해시가 다르면 문자열도 다르지만 역방향은 보장되지 않는다.
비교 결과의 사용
서로 다른 두 해시를 함께 사용하면 적절한 조건에서 충돌 가능성을 낮출 수 있지만 무조건적인 동일성 증명은 아니다. 정확한 확인이 필요하면 원문 비교 등으로 후보를 검증한다. 빠른 문자열 비교를 위한 해시의 성질만으로 비밀번호 저장이나 위변조 방지에 적합한 암호학적 해시라고 판단해서도 안 된다.