입력 데이터를 고정된 크기의 해시 값으로 변환하는 알고리즘.
해시 길이: 160비트 (20바이트)
출력 형식: 40자리의 16진수 문자열
# 리눅스에서 SHA-1 해시 생성 echo -n "hello world" | sha1sum # 출력: 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
현재는 보안상 취약점이 밝혀서 더 이상 권장되지 않는 알고리즘.
SHA-2 계열
구조: Merkle–Damgård 구조
해시 길이: 256비트 (32바이트)
출력 형식: 64자리의 16진수 문자열
echo -n "hello world" | sha256sum # 출력: b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
SHA-1 대비 충돌 저항성이 대우 뛰어남
오늘날 가장 널리 사용되는 해시 함수 중 하나
구조: Sponge 구조
해시 길이: 224, 256, 384, 512 비트 등
기존 SHA-2와 완전히 다른 구조, 독립적 보완책
SHA-2는 깨진 적이 없지만, 혹시 모를 사태에 대비한 백업 알고리즘