質問: 重複するコンテンツの検証にはどのハッシュアルゴリズムを使用できますか? 私は重複しているかどうかを判断する必要があるxmlファイルを持っています。 私はXMLファイル全体をハッシュするか、xmlファイル内の特定のXMLノードを使用して何らかのハッシュを生成します。 md5はこれに適していますか? または、他の何か?ハッシュ生成のスピードもかなり重要ですが、ユニークなデータのユニークなハッシュを生成する保証は、より重要です。
回答: MD5が壊れている(意図的にハッシュコリジョンを生成することができるという意味で)SHAファミリ(SHA-256やSHA-2など)を使用するのはおそらく*悪意のある*別のファイルと同じハッシュを持つファイルを作成します。 ハッシュ関数はその性質上、可能なすべての入力に対して一意のハッシュを保証することはできません。ハッシュ関数の長さは制限されています(MD5の長さは128ビットなので、2 128 可能なハッシュがあります)。潜在的に無限のドメインを有限の共同ドメインにマップすることはできませんが、これは数学的に不可能です。 しかし、誕生日パラドックスのように、良いハッシュ関数での衝突の可能性は、2 n/2 、nはビット単位の長さです。 (例:2 64 となる128ビットMD5の場合)。これは統計的に重要ではないので、偶然に起こった衝突について心配する必要はありません。