This commit is contained in:
krahets
2026-10-29 15:15:46 +08:00
parent b67d4c595d
commit a5ad0118bc
95 changed files with 141 additions and 141 deletions

View File

@@ -4732,7 +4732,7 @@
<li><strong>耐衝突性</strong>:異なる 2 つの入力で同じハッシュ値になるものを見つけることが、極めて困難であること。</li>
<li><strong>アバランシェ効果</strong>:入力のわずかな変化が、出力の大きく予測不能な変化を引き起こすこと。</li>
</ul>
<p>注意してほしいのは、**「均一分布」と「耐衝突性」は独立した 2 つの概念である**という点です。均一分布を満たしていても、耐衝突性を満たすとは限りません。たとえば、入力 <code>key</code> がランダムである場合、ハッシュ関数 <code>key % 100</code> は均一に分布した出力を生成できます。しかし、このハッシュアルゴリズムはあまりにも単純で、下 2 桁が同じ <code>key</code> はすべて同じ出力になります。そのため、ハッシュ値から利用可能な <code>key</code> を容易に逆算でき、結果としてパスワードが破られてしまいます。</p>
<p>注意してほしいのは、<strong>「均一分布」と「耐衝突性」は独立した 2 つの概念である</strong>という点です。均一分布を満たしていても、耐衝突性を満たすとは限りません。たとえば、入力 <code>key</code> がランダムである場合、ハッシュ関数 <code>key % 100</code> は均一に分布した出力を生成できます。しかし、このハッシュアルゴリズムはあまりにも単純で、下 2 桁が同じ <code>key</code> はすべて同じ出力になります。そのため、ハッシュ値から利用可能な <code>key</code> を容易に逆算でき、結果としてパスワードが破られてしまいます。</p>
<h2 id="632">6.3.2 &nbsp; ハッシュアルゴリズムの設計<a class="headerlink" href="#632" title="Permanent link">&para;</a></h2>
<p>ハッシュアルゴリズムの設計は、多くの要素を考慮しなければならない複雑な問題です。しかし、要求の高くない場面であれば、いくつかの単純なハッシュアルゴリズムを設計することもできます。</p>
<ul>