2

Python で暗号化プログラムを作成しました。オプションの 1 つは md5 暗号化です。md5 暗号化を介して既知の文字列を実行すると、異なるハッシュ値を受け取ります。md5 暗号化 Web サイトまたは Firefox の cryptofox を介してまったく同じ文字列を実行すると、別のハッシュ値が返されます。

例えば。私のプログラムのハッシュ出力 - fe9c25d61e56054ea87703e30c672d91- 平文:g4m3

例えば。オンライン ハッシュ / cryptofox - 26e4477a0fa9cb24675379331dba9c84- 平文:g4m3

完全に同じ単語、2 つの異なるハッシュ値。今ここに私のコードスニペットがあります:

word="g4m3"
string=md5.new(word).hexdigest()
print string
4

2 に答える 2

3

あなたの質問について: ハッシュは非常にデリケートです。1 文字の違いでも、根本的に異なる出力文字列になる可能性があります。オンライン実装が空白文字、または改行を追加している可能性があります。この余分な文字は、アルゴリズムの出力を変更します。(反対のことが起こっている可能性もあります:あなたは改行を追加していますが、オンラインのものはそうではありません)

MD5「暗号化」に関して: MD5 は暗号化ではありませんハッシングです。暗号化はデータと鍵を受け取り、ランダムなデータを吐き出します。このデータは回復可能です。一方、ハッシュは、データを取り込み、元のデータを表す有限量のデータを吐き出します。ただし、別の場所に保存しない限り、元のデータは失われます。

参照用の詳細情報: もう 1 つの興味深い違いは、さまざまな種類のアルゴリズムが吐き出すデータです。暗号化は、任意の量のデータを (もちろん OS/ソフトウェアの範囲内で) 取り込むことができ、大量のデータ appx を出力します。入力データと同じサイズ。ただし、ハッシュはそうではありません。これは単なるデータの表現であるため、出力が制限されます。これは問題を引き起こす可能性があります。たとえば、無限の量のデータがある場合、最終的には、まったく異なる 2 つのデータが同じハッシュを持つことになります。このため、ハッシュを使用して 2 つの異なる値を比較する場合は、通常、2 つの個別のハッシュも比較することをお勧めします。2 つの別個のデータが TWO EQUAL HASHES を持つ統計的確率は天文学的に低いです。

もちろん、暗号化手法をコアに利用するハッシュ アルゴリズムについても説明しますが、ここでは触れません。

于 2013-07-22T19:16:56.453 に答える