Dependencies
KMAC -> cSHAKE -> SHAKE -> KECCAK[c]
HMAC -> SHAKE -> KECCAK[c]
KECCAK-p[b, nr] (S)
th, r, p, kh, iFen Bie Wei 5Ge Bu Tong De Han Shu ,Zai [NIST FIPS-202]Sec 3.2.1 - 3.2.5Zhong Gei Chu
Rnd(A, ir) = i(kh(p(r(th(A)))), ir)
{
input: {
string S,
number nr
}
output: {
string S' `length b`
}
step: {
1. Jiang SZhuan Huan Wei state array A,Ru Sec 3.1.2Zhong De Ding Yi
2. for (let ir = 12+2l-nr; i <= 12+2l-1;) A = Rnd(A, ir)
3. Jiang AZhuan Huan Cheng Chang Du Wei bDe Zi Fu Chuan S',Ru Sec 3.1.3Zhong Ding Yi
4. Fan Hui S'
}
}
KECCAK-f
KECCAK-f[b] = KECCAK-p[b, 12+2l]
KECCAK-f[1600] = KECCAP-p[1600, 24]
KECCAK
underlying function: KECCAK-p[b, 12+2l] (Sec 3.3)
padding rule: pad10*1 (Sec 5.1)
rate r, capacity c
b = r + c -> {25, 50, 100, 200, 400, 800, 1600}
KECCAK[c]
b = 1600
KECCAK[c] = SPONGE[ KECCAK-p[1600,24], pad10*1, 1600-c ]
KECCAK[c](N, d) = SPONGE[ KECCAK-p[1600,24], pad10*1, 1600-c ](N, d)
SHA-3
message M
SHA3-224(M) = KECCAK[448] (M || 01, 224)
SHA3-256(M) = KECCAK[512] (M || 01, 256)
SHA3-384(M) = KECCAK[768] (M || 01, 384)
SHA3-512(M) = KECCAK[1024](M || 01, 512)