SHA-3
25ワードを決まったパターンで置換する。
A’[x][y] = A[y][2x+3y]
5×w(w = 64のとき320)ごとの5ビットのカラムのパリティ (この場合、5ビットの排他的論理和) を計算し、さらに隣接する2つのカラムとの排他的論理和を取る。
A’[x][y][z] = A[x][y][z] ⊕ parity(A[x-1][0...4][z]) ⊕ parity(A[x+1][0...4][z−1])
SHA3-n および Keccak-n において、n = 224, 256, 384, 512 は出力ハッシュ長である。
固定長出力の SHA-3 においては、メッセージの後、パディングの前に 2 ビット列 01 がメッセージに追加される。
キャパシティは出力ハッシュ長の2倍 c=2n である。
比率は r=1600−c である。
(以下では、ハッシュ値は十六進法で示している)
空の入力に対するハッシュ値の例:
入力メッセージのわずかな違いも、出力されるハッシュ値に大きな変化を及ぼす。例えば、メッセージの最後にピリオドを加えた場合:
SHA-3 においては、SHAKE128 および SHAKE256 と呼ばれる 2 つの可変長出力の関数も追加され、望みのセキュリティ強度に応じて利用可能となる。これらの関数ではキャパシティおよびパディングが SHA-3 のうち固定長を出力するものとは異なる。キャパシティは SHAKE128 では 256 ビット、SHAKE256 では 512 ビットである。メッセージの後、パディングの前に 4 ビット列 1111 がメッセージに追加され、出力は任意長に切りつめられる。追加ビット列のうち最初の 2 ビットは SHAKE と固定長出力の SHA-3 を区別するためのものである、続く 2 ビットは Sakura コーディングスキームのためのものであり、将来的な SHA-3 の拡張の際にそれと区別するためのものとなる。