1

varchar(50) NOT NULL,md5ハッシュコードに使用している簡単な質問

32として使用してもよいかどうか知りたいだけですか?

他と一致しない限り、私は何百万ものMD5ハッシュコードを持っています.2つの異なるキーワードが同じMD5ハッシュを持つことができる現金はありますか?

ありがとう

4

2 に答える 2

3

VARCHAR長さがわからない文字列の場合は、パフォーマンスの低下と柔軟性のトレードオフを行います。フィールドの長さが 32 文字になることがわかっているので、代わりにCHAR(32)(正確に32 文字が必要です) を使用する必要があります。

衝突の可能性について: はい、MD5ハッシュは同一である可能性があります。これを自分で簡単にテストするにはmd5sum、33 文字の 16 進数をテストします。これが機能する場合、出力よりも多くの可能性のある入力があることがわかります。そのため、2 つの入力を同じ出力にマッピングできる必要があります。

これらの 2 つのブロック (このリンクの厚意による) は両方とも of を与えることで有名md5sumです79054025255fb1a26e4bc422aef54eb4:

BLOCK 1:
d131dd02c5e6eec4693d9a0698aff95c 2fcab58712467eab4004583eb8fb7f89
55ad340609f4b30283e488832571415a 085125e8f7cdc99fd91dbdf280373c5b
d8823e3156348f5bae6dacd436c919c6 dd53e2b487da03fd02396306d248cda0
e99f33420f577ee8ce54b67080a80d1e c69821bcb6a8839396f9652b6ff72a70

BLOCK 2:
d131dd02c5e6eec4693d9a0698aff95c 2fcab50712467eab4004583eb8fb7f89
55ad340609f4b30283e4888325f1415a 085125e8f7cdc99fd91dbd7280373c5b
d8823e3156348f5bae6dacd436c919c6 dd53e23487da03fd02396306d248cda0
e99f33420f577ee8ce54b67080280d1e c69821bcb6a8839396f965ab6ff72a70

この Web サイトでは、特定の文字列が衝突する理由を視覚化しています (興味がある場合) (非常に技術的ですが、メッセージ ダイジェストとハッシュをよりよく理解したい場合は非常に興味深いものです)。

于 2013-05-05T08:21:40.783 に答える
2

特定のサイズを扱っているchar(32)ため、パフォーマンスを向上させるために使用します。

varchar文字列の長さを格納するには、さらに数バイトが必要です。長さはすでにわかっているので、必要ありません。

于 2013-05-05T08:13:30.130 に答える