Coba jelasin untuk setiap chunk dari SHA-2 dong

membuat sebuah pesan schedule array 64-masukan w[0..63] dari kata 32 bita

menyalin chunk menjadi 16 huruf pertama w[0..15] dari pesan schedule array

for i from 16 to 63

s0 := (w[i-15] rightrotate  7) xor (w[i-15] rightrotate 18) xor (w[i-15] rightshift  3)

s1 := (w[i-2] rightrotate 17) xor (w[i-2] rightrotate 19) xor (w[i-2] rightshift 10)

w[i] := w[i-16] + s0 + w[i-7] + s1

for i from 0 to 63

S1 := (e rightrotate 6) xor (e rightrotate 11) xor (e rightrotate 25)

ch := (e and f) xor ((not e) and g)

temp1 := h + S1 + ch + k[i] + w[i]

S0 := (a rightrotate 2) xor (a rightrotate 13) xor (a rightrotate 22)

maj := (a and b) xor (a and c) xor (b and c)

temp2 := S0 + maj

e := d + temp1

h0 := h0 + a

h1 := h1 + b

h2 := h2 + c

h3 := h3 + d

h4 := h4 + e

h5 := h5 + f

h6 := h6 + g

h7 := h7 + h

digest := hash := h0 append h1 append h2 append h3 append h4 append h5 append h6 append h7

Komputasi dari nilai ch dan maj dapat dioptimalkan menggunakan cara yang sama dengan yang diatur dalam SHA-1.

SHA-224 identikal dengan SHA-256, kecuali:

nilai hash inisial h0 melewati h7 berbeda, and

output yang dikonstruksikan dengan peluluhan h7.

0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4

SHA-512 identikal dalam konteks struktur dengan SHA-256, namun:

pesan dipecah menjadi chunk 1024 bita

nilai hash inisial dan konstanta putara diperpanjang ke 64 bita,

terdapat 80 putaran dan bukan 64,

schedule array pesan w memiliki 80 kata 64 bita dan bukan 64 kata 32 bita,

untuk memperpanjang schedule array pesan w, loop dari 16 ke 79 dan bukan dari 16 ke 63,

konstanra bulat didasarkan pada 80 bilangan prima pertama 2..409,

ukuran kata yang digunakan untuk kalkulasi adalah sepanjang 64 bita,

panjang yang ditambahkan dari pesan (sebelum pra-proses), dalam bita, adalah sebuah integral big-edian 128 bita, dan

banyak nilai shift dan rotate yang digunakan berbeda.

h[0..7] := 0x6a09e667f3bcc908, 0xbb67ae8584caa73b, 0x3c6ef372fe94f82b, 0xa54ff53a5f1d36f1,

k[0..79] := 0x428a2f98d728ae22, 0x7137449123ef65cd, 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc, 0x3956c25bf348b538,

0x59f111f1b605d019, 0x923f82a4af194f9b, 0xab1c5ed5da6d8118, 0xd807aa98a3030242, 0x12835b0145706fbe,

0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2, 0x72be5d74f27b896f, 0x80deb1fe3b1696b1, 0x9bdc06a725c71235,

0xc19bf174cf692694, 0xe49b69c19ef14ad2, 0xefbe4786384f25e3, 0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65,

0x2de92c6f592b0275, 0x4a7484aa6ea6e483, 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5, 0x983e5152ee66dfab,

0xa831c66d2db43210, 0xb00327c898fb213f, 0xbf597fc7beef0ee4, 0xc6e00bf33da88fc2, 0xd5a79147930aa725,

0x06ca6351e003826f, 0x142929670a0e6e70, 0x27b70a8546d22ffc, 0x2e1b21385c26c926, 0x4d2c6dfc5ac42aed,

0x53380d139d95b3df, 0x650a73548baf63de, 0x766a0abb3c77b2a8, 0x81c2c92e47edaee6, 0x92722c851482353b,

0xa2bfe8a14cf10364, 0xa81a664bbc423001, 0xc24b8b70d0f89791, 0xc76c51a30654be30, 0xd192e819d6ef5218,

0xd69906245565a910, 0xf40e35855771202a, 0x106aa07032bbd1b8, 0x19a4c116b8d2d0c8, 0x1e376c085141ab53,

0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8, 0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb, 0x5b9cca4f7763e373,

0x682e6ff3d6b2b8a3, 0x748f82ee5defb2fc, 0x78a5636f43172f60, 0x84c87814a1f0ab72, 0x8cc702081a6439ec,

0x90befffa23631e28, 0xa4506cebde82bde9, 0xbef9a3f7b2c67915, 0xc67178f2e372532b, 0xca273eceea26619c,

0xd186b8c721c0c207, 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178, 0x06f067aa72176fba, 0x0a637dc5a2c898a6,

0x113f9804bef90dae, 0x1b710b35131c471b, 0x28db77f523047d84, 0x32caab7b40c72493, 0x3c9ebe0a15c9bebc,

0x431d67c49c100d4c, 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a, 0x5fcb6fab3ad6faec, 0x6c44198c4a475817

S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)

S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)

s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)

s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)

SHA-384 identikal dengan SHA-512, kecuali:

nilai inisial hash h0 melalui h7 berbeda (diambil dari bilangan prima ke-9 sampai ke-16), dan

output disusun oleh peluluhan h6 dan h7.

h[0..7] := 0xcbbb9d5dc1059ed8, 0x629a292a367cd507, 0x9159015a3070dd17, 0x152fecd8f70e5939,

SHA-512/t identikal teehadap SHA-512 kecuali:

nilau inisial hash h0 melalui h7 diberikan oleh SHA-512/t IV generation function,

output disusun oleh perpotongan rangkaian dari h0 melalu h7 di t bita,

nilau t tidak diperbolehkan setara dengan 384 dalam SHA-384

nilai t 224 dan 256 disetujui.SHA-512/t IV generation function mengevaluasi SHA-512 yang dimodifikasi pada string ASCII "SHA-512/t", diganti dengan representasi desimal t. SHA-512'' yang dimodifikasi sama dengan SHA-512 kecuali nilai awalnya h0 yang melewati h7 telah di-XORed dengan konstanta heksadesimal 0xa5a5a5a5a5a5a5a5.

Contoh implementasi C untuk keluarga fungsi hash SHA-2 dapat ditemukan di RFC 6234.