FIPS 180-4에서 SHA-256은 메시지를 512비트 블록으로 나눠 256비트 해시값을 만들며, 마지막 블록은 1비트와 0비트, 64비트 길이 값으로 채웁니다. 이 글은 2026-10-27에 연 NIST FIPS 180-4(2015년 8월, Final) 원문으로 확인한 범위만 다룹니다.
확인 기준일 2026-10-27 · 다음 확인 예정 2026-11-26
알고리즘마다 크기는 어떻게 다를까?
원문 1절 표는 SHA-1, SHA-224, SHA-256이 블록 512비트와 단어 32비트를 쓰고, SHA-384 이상은 블록 1024비트와 단어 64비트를 쓴다고 보여 줍니다. SHA-512/224와 SHA-512/256은 1024비트 블록에 224·256비트 출력을 쓰는 변형입니다.
| 알고리즘 | 블록(비트) | 단어(비트) | 출력(비트) |
|---|---|---|---|
| SHA-1 | 512 | 32 | 160 |
| SHA-224 | 512 | 32 | 224 |
| SHA-256 | 512 | 32 | 256 |
| SHA-384 | 1024 | 64 | 384 |
| SHA-512 | 1024 | 64 | 512 |
패딩은 어떻게 채워질까?
5.1.1절은 메시지 끝에 비트 1을 붙이고, 길이 조건에 맞는 최소 개수의 0비트를 붙인 뒤, 원래 길이를 64비트로 적으라고 정합니다. 원문 예시 abc는 24비트라 0이 423개 붙어 512비트가 됩니다.
계산은 몇 번 돌까?
6.2.2절은 각 블록마다 메시지 스케줄을 만들고 t=0부터 63까지 64번 변환한 뒤 중간 해시값에 더합니다. 해시로 데이터 묶음을 요약하는 구조는 머클 증명으로 확인할 수 있는 사실과 그 한계 글에, 거래 식별자로서의 해시는 트랜잭션 해시로 송금 상태 확인하는 법 글에 있습니다.
출력은 어떻게 만들어질까?
원문 6.2.2절에 따르면 각 512비트 블록을 16개의 32비트 단어로 나누고, 이를 확장한 메시지 스케줄과 라운드 상수로 여덟 개의 작업 변수를 갱신한 뒤 이전 해시값에 더합니다. 이 덧셈은 모두 2^32를 법으로 합니다. 마지막 블록까지 마치면 여덟 단어를 이어 붙인 256비트가 메시지 다이제스트입니다. SHA-224는 같은 계산에 초기값만 바꾸고 결과의 왼쪽 224비트만 취합니다. 패딩 때문에 메시지 길이가 블록 길이의 배수가 되므로, 입력 길이가 달라도 같은 크기의 블록 단위로 처리됩니다.
이 글에서 확인하지 못한 것은?
라운드 상수의 값, 초기 해시값, 보안 강도 수치는 PDF 변환 과정에서 읽기 어려워 인용하지 않았습니다. SHA-1의 사용 중단 여부와 개정 초안의 내용도 이번에 확인한 범위 밖입니다. 비트코인이 SHA-256을 어떤 단계에서 쓰는지는 별도 명세에서 확인해야 합니다. 정리하면 패딩 덕분에 길이가 다른 입력도 같은 크기 블록 단위로 처리되고, 출력은 항상 256비트입니다. 원문 PDF 기준으로 이 글의 모든 수치를 대조했으며, 이후 개정이 나오면 확인 예정일에 다시 열어 비교합니다.
자주 묻는 질문
SHA-256의 메시지 길이 제한이 있나요?
원문 표는 메시지 크기를 2^64비트 미만으로 정하고, SHA-384·SHA-512 계열은 2^128비트 미만으로 정합니다.
같은 메시지의 해시는 항상 같나요?
알고리즘이 입력만으로 정해지는 절차이므로 같은 입력은 같은 출력을 냅니다. 입력 바이트가 한 비트라도 다르면 별개 입력입니다.
NIST는 이 표준을 바꿀 계획이 있나요?
NIST 페이지에 2023-03-07자로 두 번의 의견 수렴 뒤 FIPS 180-4를 개정하기로 했다는 안내가 있습니다. 개정 내용은 확인하지 못했습니다.



