原像耐性 (第一、第二) と衝突耐性 (弱衝突、強衝突) は似ているが、原像耐性が「与えられたある値 \(x\) に対して」であるのに対して衝突耐性は「任意の値 \(x\) に対して」であるという違いがある。
\(k\) ビットの理想的な暗号論的ハッシュ関数に対して原像攻撃を成功させるには \(O(2^k)\) 回の試行を行う必要がある。しかし、同等の確率で \(h(x)=h(x')\) となるような衝突攻撃を成功させるためには、バースデーパラドックス (birthday paradox) と同じ理由により、より少ない \(O(2^{k/2})\) 回程度の試行で済む。言い換えると、出力値が \(k\) ビットの理想的な暗号論的ハッシュ関数は \(k/2\) ビットセキュリティを持つ。
コンピュータの性能向上や新しいアルゴリズムの報告などによって、かつて暗号論的ハッシュ関数として扱われていたアルゴリズムのいくつかはすでに安全ではないと認識されている。MD2 は早い時期に原像攻撃と衝突攻撃の両方が見つかっている。MD5 も同様に現在では短時間で衝突を発見することができており、また SHA-1 は \(2^{63}\) 程度の操作で衝突が報告されている。
\(y=h(x)\) となるようなハッシュ値 \(y\) が与えられたとき、ある入力 \(x'\) に対して \(y'=h(x \ || \ x')\) となるような \(y'\) が計算可能であることを利用した攻撃を伸長攻撃 (length extension attach) と呼ぶ。MD5, SHA-1, RIPEMD-160, Whirlpool, SHA-2 (SHA-224~512) など多くの暗号論的ハッシュ関数は Merkle–Damgård 構成法に基づいているが、Merkle–Damgård 構成法の完全な出力を使用すると伸長攻撃に対して脆弱となる。SHA-3 や BLAKE2, BLAKE3、または SHA-2 でも出力の切り捨てを伴うタイプは伸長攻撃に対して安全である。
計測結果では AVX/SSE 拡張命令を使用する HighwayHash や AES 拡張命令を使用する aHash の高いパフォーマンスが目を引く。また Ryzen 3900XT と Core i7-8569U での SHA-1, SHA-224, SHA-256 の速度差は CPU が Intel SHAX 拡張命令をサポートしているかの違いによるものと思われる。