해시 함수

SHA-256 : 임의 길이 → 256비트

A길이 제한 없음
SHA-256
H(A)32바이트
2c68318e352971113645cbc72861e1ec23f48d5baa5f9b405fed9dddca893eb4
B길이 제한 없음
SHA-256
H(B)32바이트
da3647ad95cd090d49887688046765656e4cb3d40ee6d3f4adc20813cc365278

SHA-256 안에서 A가 H(A)가 되기까지

  1. 1

    글자를 바이트로 바꾸기

    A길이 제한 없음
    안녕하세요
    바이트15바이트
    ec9588eb8595ed9598ec84b8ec9a94
  2. 2

    길이를 64바이트의 배수로 맞추기

    바이트15바이트↑ 1단계 결과
    ec9588eb8595ed9598ec84b8ec9a94
    ‖ 0x80 ‖ 0x00… ‖ 길이
    패딩한 메시지64바이트
    ec9588eb8595ed9598ec84b8ec9a9480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078
  3. 3

    64바이트 블록 1개로 자르기

    패딩한 메시지64바이트↑ 2단계 결과
    ec9588eb8595ed9598ec84b8ec9a9480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078
    64바이트씩
    M₁64바이트
    ec9588eb8595ed9598ec84b8ec9a9480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078
  4. 4

    블록 1을 압축 함수에 넣기

    H₀32바이트
    6a09e667bb67ae853c6ef372a54ff53a510e527f9b05688c1f83d9ab5be0cd19
    M₁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바이트)