私は研究を続けていますが、無知です。MD5には数字と文字の両方を含めることができることは知っていますが、MD5に数字のみ、または文字のみがある場合は、現在スクリプトが壊れています。
6 に答える
数字のみのmd5ハッシュを提供するいくつかの最初の文字列のリスト:
ximaz : 61529519452809720693702583126814
aalbke : 55203129974456751211900188750366
afnnsd : 49716523209578759475317816476053
aooalg : 68619150135523129199070648991237
bzbkme : 69805916917525281143075153085385
これが文字だけの1つです:
cbaabcdljdac : cadbfdfecdcdcdacdbbbfadbcccefabd
あなたは32桁です。すべての暗号が均等に分散されていると仮定すると、数値暗号だけで構成された10 ^ 32の組み合わせ、アルファベット暗号だけの6 ^ 32の組み合わせ、および合計で16^32の組み合わせがあります。
これにより、呼び出しごとにスクリプトが失敗する確率が(10 ^ 32 + 6 ^ 32)/ 16^32になります。
echo "scale=10;(10^32 + 6^32) / 16^32" | bc
.0000002938
したがって、約340万件に一度は失敗します。どのくらいの頻度で使用しますか?
理論的には、はい、MD5ハッシュ(16進文字列に変換された場合)には、10進数のみまたは文字のみを含めることができます。
実際には、そうです。文字列ximaz
は、のMD5ハッシュを生成します61529519452809720693702583126814
。それを試してみてください!
(例としてPHP Sadnessに感謝します)
MD5は、優れたハッシュ関数(現在は壊れているため、セキュリティアプリケーションを使用しないでください)であることが意図されていました。つまり、出力スペースに収まるすべての可能な値が利用されるように、ランダムに見える出力を生成します。これらの文字と数字は、出力の16進表現です。はい、文字のみまたは数字のみで構成される出力を取得できる場合もありますが、ほとんどの場合、両方が含まれます。
MD5の16進表現を解析する必要がある場合、出力が文字のみまたは数字のみであるというかなりまれなケースをサポートするために、確かに時間がかかります。
MD5ハッシュの16進表現で作業していると思います。MD5ハッシュは、実際には128ビットの文字列です。ほとんどのツールは、32桁の16進数でそれらを印刷します。16進数は、0〜9およびafを使用します。
例:
susam@swift:~$ echo -n "foo" | md5sum
acbd18db4cc2f85cedef654fccc4a4d8 -
これは非常に古い質問ですが、md5ハッシュに数字のみの文字列がさらに3つ見つかりました。また、Googleはこれらのハッシュを検索しているときに何も見つからなかったため、これらを投稿する価値があると思いました。
Ioktak : 54948232518148653519995784773259
'99x\`b0x\'b : 24034969117462298298932307218853
uttuJ## : 74616072929762262275291990931711