Davies–Meyer構成
ブロック暗号を使って、ハッシュ関数の圧縮関数を組み立てる方式。
メッセージブロックを暗号の鍵、直前のチェイン値を平文として入力し、その出力を同じ直前の値とXORする。この最後のXOR(フィードフォワード)があるからこそ、構成全体が単なる暗号の置換にならずに済む。要はそこが肝だ。
ブロック暗号をそのままハッシュに使えない理由は、ハッシュ長が実質的にブロックサイズで頭打ちになるからだ。64ビットブロックの暗号では、ささやかな計算力でも衝突攻撃を許してしまうほど短いハッシュしか得られない。