MD5入力/出力の最大長


回答:


240

MD5は、任意の長さのメッセージを128ビットの固定長出力に処理します。通常、32桁の16進数のシーケンスで表されます。


95
自己注意:MD5ハッシュ長= 128 bits= 16 bytes=32 hex digits
チェックサム

2
[通常の編集] 32桁の16進数で、文字列には「az」からの単語と「0-9」からの数字のみが含まれます
v1h5

1
以前のコメントに少し間違いがあることに気づきました。テキストは引用符で
囲む

2
@Shafizadeh答えが示すように、入力の長さは任意です。つまり、パラメーターは必要な長さにすることができます。
kdojeteri 2016

1
@Peping小さな修正:使用するプログラミング言語で使用されるデータ型が可能な限り、入力は可能です。例:Javaの文字列は内部的に配列を使用するため、文字列には(2 ^ 31)-1文字(ヒープサイズによってはそれ以下)しか含めることができません。これは、JavaのMD5関数の最大入力でもあります。しかし純粋に理論的には、MD5関数は実際に任意の長さの入力を処理できます。;)
RicoBrassers 2017

38
  • メッセージの長さは無制限です。

追加の長さ

前のステップの結果には、bの64ビット表現(埋め込みビットが追加される前のメッセージの長さ)が追加されます。まれにbが2 ^ 64より大きい場合、bの下位64ビットのみが使用されます。

  • ハッシュは常に128ビットです。16進数の文字列としてエンコードする場合、1文字あたり4ビットをエンコードして、32文字にすることができます。
  • MD5は暗号化ではありません。通常、MD5ハッシュを「復号化」して元の文字列を取得することはできません。

詳細はこちら


メッセージの長さは無制限です。メッセージとはどういう意味ですか?入力ですか?私の質問はMD5("how many characters exactly?");
Shafizadeh

@Shafizadeh入力は、現在のプログラミング言語で可能な限り長くすることができます。Javaでは、これは文字列内の(2 ^ 31)-1文字になります。そして、はい、「メッセージ」が入力です。
RicoBrassers 2017

@Shafizadeh ...またはファイルからの入力は、利用可能なストレージと同じ大きさになる可能性があります。
ToolmakerSteve 2017

9

任意の長さにすることができますが、もちろん、文字列の入力が長すぎると、コンピュータでメモリの問題が発生する可能性があります。出力は常に32文字です。


4
文字列入力が長すぎる場合は、ファイルにない限り、最初はシステムに存在しません。この場合、ブロックが読み込まれるときにブロックをダイジェスト関数に渡すことができます。つまり、必要なのは持っているblock時の入力のバイトが利用可能。
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳

6

このアルゴリズムは、任意の入力長をサポートするように設計されています。つまり、DVDのISOのような大きなファイルのハッシュを計算できます...

入力に制限がある場合、ハッシュ関数が使用されている環境からのものである可能性があります。ファイルを計算する必要があり、環境にMAX_FILEの制限があるとします。

ただし、出力文字列は常に同じです:32桁の16進文字(128ビット)!



4

MD5は壊れていると見なされるため、MD5の代わりにSHA-1を使用することをお勧めします。

MD5の脆弱性について詳しくは、このウィキペディアの記事をご覧ください


5
これは噂に過ぎません。MD5は、通常のWeb開発タスクのほとんどに十分対応できます
常識

11
その作成者、ならびにブルース・シュナイアーと国土安全保障局は、それが壊れていることに同意しています...しばらくの間実際に壊れていることをあなたに納得させるには、さらにいくつ「噂」が必要ですか?事実は、特定のハッシュを生成する入力を見つけるのは任意で簡単です。もちろん、十分に大きなソルトを使用して入力をソルトすることにより、このリスクを軽減できます。余談ですが、SHA-1も同様に壊れていると考えられています。アップグレードするようにアドバイスする場合は、SHA-2にアップグレードするようにアドバイスしてください。
kander

3
@kanderああ、私は非常に少しを必要とします。例。ハッシュが与えられた場合、ソース文字列を持ってくるでしょうか?素晴らしい記事へのリンクではなく、誰かの意見ではなく、ソース文字列だけですか?
常識

2
彼らが「壊れた」という言葉の下で彼らが本当に何を意味するかについて、誰も本当に言及しませんでした。ただし、@ YourCommonSenseは理にかなっています。
JSmyth 2014年

4
あなたはMD5のセキュリティ用途について話しています。しかし、MD5(またはその他のハッシュ技術)には、他にも多くの用途があります。1つは、ハッシュを使用してファイル名を変更することです。MD5の衝突抵抗については、きっと気になりません。あなたが投稿したものはすべて真実で、私の2セントだけです。
tfrascaroli 2017年

3

私が知っているmd5の入力に制限はありません。一部の実装では、入力全体をmd5関数に渡す前にメモリにロードする必要があります(つまり、実装はストリームではなくメモリのブロックで動作します)が、これはアルゴリズム自体の制限ではありません。出力は常に128ビットです。md5は暗号化アルゴリズムではなく、暗号化ハッシュであることに注意してください。つまり、これを使用してデータのチャンクの整合性を検証できますが、ハッシュを元に戻すことはできません。また、md5は壊れていると見なされるため、セキュリティ関連の用途には使用しないでください(ダウンロードしたファイルの整合性などを確認しても問題ありません)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.