고정된 출력 길이 : 입력 데이터의 크기와 관계없이 항상 일정한 길이의 해시 값을 생성
일방향 함수 : 해시 값을 생성하는 반복 가능한 알고리즘, 원래 데이터를 해시 값으로 변환할 수 있지만, 해시 값에서 원래 데이터를 복구하는 것은 매우 어렵거나 거의 불가능함
충돌 저향성 : 서로 다른 두 입력에 대해 동일한 해시 값을 생성하는 충돌이 최소화 되어야 함
안정성과 안전성 : 안전한 해시 함수는 무작위적인 입력 데이터에 대해 예측하기 어려운 해시 값을 생성해야 하고 입력 데이터의 작은 변화가 해시 값에 큰 변화를 일으켜야 함을 의미
무결성 : 데이터의 무결성을 확인하기 위해 사용
속도 : 일부 해시 함수는 빠른 처리 속도를 갖도록 설계되었지만, 다른 일부 해시 함수는 보안성을 강조하고 속도는 느리지만 안전성을 향상
MD5 (Message-Digest Algorithm 5): 128비트의 해시 값을 생성하는 비암호화 해시 함수로, 더 이상 안전하지 않음
SHA-1 (Secure Hash Algorithm 1): 160비트의 해시 값을 생성하는 해시 함수로, 이것도 더 이상 안전하지 않음
SHA-256, SHA-384, SHA-512 (Secure Hash Algorithm): 각각 256비트, 384비트, 512비트의 해시 값을 생성하는 해시 함수
RIPEMD (RACE Integrity Primitives Evaluation Message Digest): 다양한 비트 수를 가진 해시 값을 생성하는 일련의 해시 함수
Whirlpool: 512비트의 해시 값을 생성하는 해시 함수로, 일부 보안 응용 프로그램에서 사용
Blake2: SHA-3 후보로 제안된 256비트 해시 함수로, 높은 처리 속도와 보안성을 제공
HMAC (Hash-based Message Authentication Code): 특정 해시 함수를 사용하여 메시지 인증 코드를 생성하는 데 사용되는 메시지 인증 코드 알고리즘