為了方便,密碼雜湊函数 CHF 常會生成相同長度的 Digest。 這串突如其來、連唸都唸不出來的「Merkle–Damgård 架構」就是能做到這樣功能的一個「想法」。根據 Merkle 及 Damgård 這兩位博士的說法,如果設計的 Hash 方程式可有效避免碰撞,則經 Merkle–Damgård 架構運算後得出來的結果也有相同避免碰撞的能力。
那許多知名的 CHF 的方法如 MD5, SHA-1, SHA-2 都是利用這套架構打造出來的演算法,所以我們在這裡先介紹一下。
Merkle–Damgård 架構的步驟為:
下面兩張圖是我從網路上 copy 來的,基本上是上述步驟的圖像化,可選一張較易理解的看:
不過,Merkle–Damgård 架構的演算法若是沒小心使用,容易被未來會提到的「長度延伸攻擊Length extension attack」攻擊