해시 함수
SHA-256 : 임의 길이 → 256비트
A길이 제한 없음
SHA-256
H(A)32바이트
2c68318e352971113645cbc72861e1ec23f48d5baa5f9b405fed9dddca893eb4B길이 제한 없음
SHA-256
H(B)32바이트
da3647ad95cd090d49887688046765656e4cb3d40ee6d3f4adc20813cc365278SHA-256 안에서 A가 H(A)가 되기까지
- 1
글자를 바이트로 바꾸기
- 2
길이를 64바이트의 배수로 맞추기
바이트15바이트↑ 1단계 결과ec9588eb8595ed9598ec84b8ec9a94‖ 0x80 ‖ 0x00… ‖ 길이패딩한 메시지64바이트ec9588eb8595ed9598ec84b8ec9a9480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078 - 3
64바이트 블록 1개로 자르기
패딩한 메시지64바이트↑ 2단계 결과ec9588eb8595ed9598ec84b8ec9a948000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007864바이트씩M₁64바이트ec9588eb8595ed9598ec84b8ec9a9480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078 - 4
블록 1을 압축 함수에 넣기
H₀32바이트6a09e667bb67ae853c6ef372a54ff53a510e527f9b05688c1f83d9ab5be0cd19M₁64바이트↑ 3단계 결과ec9588eb8595ed9598ec84b8ec9a9480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078압축 함수H₁ = H(A)32바이트2c68318e352971113645cbc72861e1ec23f48d5baa5f9b405fed9dddca893eb4
상수 · 표준이 정해 두어 누구나 같은 값
SHA-256FIPS 180-4
| 기호 | 이름 | 정의 · 출처 | 값 |
|---|---|---|---|
| H⁽⁰⁾ | 초기 해시값 (IV) | 처음 8개 소수 2 … 19의 제곱근 소수부 앞 32비트 | 6a09e667bb67ae853c6ef372a54ff53a510e527f9b05688c1f83d9ab5be0cd19 |
| K₀ … K₆₃ | 라운드 상수 | 처음 64개 소수 2 … 311의 세제곱근 소수부 앞 32비트 | 428a2f9871374491b5c0fbcfe9b5dba53956c25b59f111f1923f82a4ab1c5ed5d807aa9812835b01243185be550c7dc372be5d7480deb1fe9bdc06a7c19bf174e49b69c1efbe47860fc19dc6240ca1cc2de92c6f4a7484aa5cb0a9dc76f988da983e5152a831c66db00327c8bf597fc7c6e00bf3d5a7914706ca63511429296727b70a852e1b21384d2c6dfc53380d13650a7354766a0abb81c2c92e92722c85a2bfe8a1a81a664bc24b8b70c76c51a3d192e819d6990624f40e3585106aa07019a4c1161e376c082748774c34b0bcb5391c0cb34ed8aa4a5b9cca4f682e6ff3748f82ee78a5636f84c878148cc7020890befffaa4506cebbef9a3f7c67178f2 |
| 블록 크기 | 압축 함수 한 번에 넣는 크기 | 512비트 (64바이트) | |
| 워드 크기 | 모든 연산의 단위, mod 2³² | 32비트 (4바이트) | |
| 라운드 수 | 블록 하나당 (= K의 개수) | 64 | |
| 출력 길이 | H⁽ᴺ⁾의 8워드 | 256비트 (32바이트) |