2009-11-11 9 views
9

MD5ハッシュとキーワード(1行に1つ)を含むテキストファイルをC#アプリケーションに入力しようとしています。文字列がMD5ハッシュかどうかを確認する方法はありますか?私はMSDNを見て、MD5クラスで何も見つけることができませんでした。文字列がMD5ハッシュかどうかをテストする方法はありますか?

+2

あなたはファイルの内容のサンプルを投稿することができますか?データにパターンがありますか? –

+0

残念ながら、私はできません。私は私のアプリをテストするための本当のファイルがありません。 – Theresa

答えて

19

正規表現:行うには[0-9a-f]{32}

+5

もちろん16進数でエンコードされていると仮定します: –

+6

この94476226E1DD479C8E1FAB7A8FDEFFFAは動作しません。corect正規表現は '[0-9a-fA-F] {32}' –

+1

です。実際には、正規表現は '^ [0-9a- @EduardFlorinescuは、大文字と小文字を区別しないフラグを設定できない場合には、[f] {32} $ '(大文字小文字を区別しない'/i'フラグ)または '^ [0-9a-fA -F] {32} $' '[0-9a-f] {32}'は長い文字列にもマッチするので、何かのMD5ではなくランダムな16進数のエンコードされたデータになります。 – poncha

9

MD5ハッシュは実際にはバイナリデータです。文字列を取得していれば、おそらく何らかの形でエンコードされているはずです。ベース64または16進数。文字列が正しい長さのバイナリ(16バイト)で正しくエンコードされているかどうかをテストできます。それはすべてですが、は決してデータをハッシュした結果ではないバイナリ値であるのに対し、私はあなたがそのような値を認識できることを非常に疑う。理想的には、そのような値は、もちろん...

3

その32バイト長場合と0-9そのおそらくMD5-Fが存在すべきであるが、100%

5

A MD5ハッシュは、128ビットの値ではありません。これは、通常、長さ16のbyte[]、またはstringとして表され、各バイトは2桁の16進数で表されます。 MD5ハッシュには、128ビットの値がMD5ハッシュかどうかを検出するための内部構造や「シグネチャ」がありません。

1

まず最初は、それに基づいて試合を設計し、MD5ハッシュのエンコード方法を動作するようにファイルを調べています。

1

私は正しいと思うのは、時には大文字も含めて大文字も含めて大文字も含めています。

[0-9a-fA-F]{32} 

または

[0-9a-f]{32}(?i)