SHA-3コンペで選出されたKaccakは、旧来の構造とは異なるスポンジ関数という考え方で構築されている。 古い設計のハッシュ関数は、入力圧縮関数、内部状態バッファ、撹拌関数で構成されていた。(丸めやパディングのような雑多な処理は略す) 入力圧縮関数は、撹拌関数の呼び出し回数を減らすため、また前処理として大きな入力ブロックを内部状態サイズ以下に不可逆に縮めるために使われ、 可能な限り撹拌関数の対象となる内部状態サイズ=必要レジスタ数を小さくして、その分撹拌関数一回あたりの複雑性を高めることで安全性を担保しようとした。 http://sponge.noekeon.org/ 一方スポンジ関数方式では、大きな内部状態=スポンジを用い、複雑な圧縮関数を不要にする。入力は単に、内部状態の一部(例えばKeccakでは1600bit中の1024bit)にXORするような方法で行われる。最後に出力圧縮関数
![SHA-3に選出されたKaccakのスポンジ関数方式](https://cdn-ak-scissors.b.st-hatena.com/image/square/126e9c63960837b5815901e11e1f6c1303c17f2b/height=288;version=1;width=512/https%3A%2F%2Fblog.seesaa.jp%2Fimg%2Fogp_logo.png)