SHAKE
FIPS PUB 202
SHAKE128 / SHAKE256 シャケではないかも
出力が1回のKeccak-fより長い場合は入力が空でくり返すKeccakのスポンジ構造を使う。
1600bitを攪拌し、入力も出力も1600 - 暗号強度bit ぐらいの長さを使う。
出力長に関わる値は入力値に含まれないため出力長を変えても基本的な出力は同じ。ハッシュ値がかぶった場合は隠れている部分が違ってくるので後の結果も変わるが、SHAのように出力長が違うと値も変わるものを想定したところでは使えない。
RawSHAKE にビットを付加したもの。付加することで同じ出力にならない。
SHAKE128(M,d) = RawSHAKE128(M || 11,d) = Keccak[256](M || 1111,d)
SHAKE256(M,d) = RawSHAKE256(M || 11,d) = Keccak[512](M || 1111,d)
Mはメッセージ dは出力長 1はビット
ラベルを付けたりできるcSHAKE128 / cSHAKE256もある Keccak
RawSHAKE
SHAKE
ECDSAでハッシュ関数の代わりに使われたりするらしい