ホームページ >バックエンド開発 >PHPチュートリアル >md5は復号化できるのでしょうか?

md5は復号化できるのでしょうか?

阿神
阿神オリジナル
2017-03-14 22:47:3114630ブラウズ

md5 に接したことがある人なら誰でも、md5 が復号化できないことを知っていますが、なぜインターネット上には MD5 を解読できると主張する Web サイトがたくさんあるのでしょうか? この記事ではこの問題について説明します。


まず第一に、インターネットで言われているように、元に戻すことができるクラックされた md5 バージョンが多数ありますが、それらは辞書の実行のみに基づいています。いわゆる辞書の実行では、一般的に使用されるいくつかの単語やフレーズの md5 エンコードを比較に使用します。知らせ!それは「よく使われる」です!
一般的に使用される意味を理解できない人がいる場合は、数学的な例を示しましょう。
x=1 の場合は y=1、x=0 の場合は y=0 であると仮定します。この関数に対する皆さんの最初の反応は何でしょうか? y=x^n(n>0)or (y-0.5)^2+(x-0.5)^2=(0.5)^2
これはよく使われる関数です。
では、一般的に使用されないものは何ですか?条件は上と同じです: y=log2(x+1)
まあ、実際にはよく使われる関数 = = ですが、あまり使われない関数をコンパイルするのは面倒すぎるので、怠け者であることを許してください。
突然思いついて、y=∫(上限1)(下限0)(8x^3+8x^2-16x)dxというあまり使われない関数を考えました。


例を見てみましょう:

MD5 は入力情報を 512 ビット グループで処理し、各グループは 16 の 32 ビット サブグループに分割されます。一連の処理の後、アルゴリズムの出力は 4 つの 32 ビット グループで構成されます。グループは、グループの連結により 128 ビットのハッシュ値を生成します。 MD5 アルゴリズムでは、まず情報を処理して、そのバイト長が 512 の残りの後の 448 になるようにする必要があります。したがって、情報のバイト長は N*512+448、つまり N*64+56 バイトに拡張されます (N は正の整数)。記入方法は、情報の最後に1を記入し、条件を満たすまで0を補っていきます。この結果には、64 ビット バイナリで表現されたプリパディング情報長が付加されます。これら 2 つの処理ステップの後、情報の直接の長さは N*512+448+64=(N+1)*512 に変わります。つまり、長さは正確に 512 の整数倍になります。これは、後続の処理で情報の長さの要件を満たすために行われます。

MD5 には、接続変数と呼ばれる 4 つの 32 ビット整数パラメーターがあります。 A=0x01234567;

B=0x89abcdef;

C=0xfedcba98;

D=0x76543210。

4 つの処理ビット演算関数もあります:

F(X,Y,Z)=(X&Y)|((~X)&Z);

G(X,Y,Z)=(X&Z)|(Y&(~Z));

H(X,Y,Z)=X^Y^Z;

I(X,Y,Z)=Y^(X|(~Z));

このうち、X、Y、Z はそれぞれ任意の 32 ビット整数を表します。 & は AND 演算、| は OR 演算、~ は NOT 演算、^ は XOR 演算です [4]。

具体的な手順は次のとおりです:

まず、A を a 変数に、B を b 変数に、C を c 変数に、D を d 変数にコピーします。次に、メイン ループが 4 ラウンド実行され、各ラウンドで 16 の操作が実行されます。各演算は、a、b、c、d の 3 つに対して非線形関数演算を実行し、その結果を 4 番目の変数、テキストのサブグループ、および定数に加算します。次に、結果を不定数だけ右に移動し、a、b、c、d のいずれかを加算します。

上記の例から、md5 は任意の長さのテキスト コンテンツを 128 ビットのハッシュ番号に単純化するものであることが明確にわかります。テキストの内容に文字 a が 1 つしか含まれていない場合でも、10,000 ワードを超える長い論文でも、すべて 128 ビットのハッシュ番号に縮小 (または埋められ) されます。これにより、クラックはほとんど不可能になります。

なぜそんなことを言うのですか?先ほどの例でも、「x=0、y=0 のとき、x=1、y=1 のとき」という結果は伝えていますが、それは教えていません (実際、文字数を数える人はいません)。文書内)これはどのような関数ですか、対数関数ですか、一次関数ですか、それとも高次関数ですか?分かりません、どうすれば解読できますか?

さらに、実際、暗号化の分野では、DES と RSA が実際の暗号化であり、MD5 は文書の検証に使用され、文書が改ざんされているかどうかを検出するためのキーを生成するために使用されます。

これを見れば、

md5 を復号化できないことが誰の目にも明らかになるはずです

さらに 2 つの優れた知識ポイント:

1.

いわゆる暗号化: 暗号化テクノロジは、最も一般的に使用されているセキュリティおよび機密保持の方法であり、重要なデータを送信時に文字化けしたコードに変換し(暗号化)、宛先に到着した後に同じまたは別の手段を使用して復元(復号化)します。

暗号化テクノロジーには 2 つの要素が含まれます。アルゴリズムとアルゴリズムは、通常の情報または理解可能な情報と一連の数字を組み合わせて理解できない暗号文を生成するステップであり、キーはデータの暗号化と復号化に使用されます。セキュリティと機密性においては、適切な鍵暗号化技術と管理メカニズムにより、ネットワーク情報通信の安全性を確保できます。


2.

いわゆるハッシュ:

ハッシュは、一般に「ハッシュ」と訳され、直接「ハッシュ」とも訳されますが、ハッシュ アルゴリズムを通じて任意の長さの入力 (プリマッピング、プリイメージとも呼ばれます) を固定長の出力に変換することです。出力はハッシュ値です。この変換は圧縮されたマッピングです。つまり、ハッシュ値の空間は通常、入力の空間よりもはるかに小さく、異なる入力が同じ出力にハッシュされる可能性があり、ハッシュ値から入力値を一意に決定することは不可能です。 。
簡単に言うと、任意の長さのメッセージを固定長の情報ダイジェストに圧縮する機能です。
ハッシュは、主に情報セキュリティの分野で暗号化アルゴリズムとして使用され、さまざまな長さの情報をハッシュ値と呼ばれる乱雑な 128 ビット コードに変換します。データコンテンツとデータストレージアドレスのマッピング関係。
情報セキュリティにおけるハッシュ アルゴリズムの適用は、主に次の 3 つの側面に反映されます。
1) ファイル検証
私たちがよく知っている検証アルゴリズムには、パリティ チェックと CRC チェックが含まれます。これら 2 種類のチェックはデータの改ざんに耐性がありません。機能を備えているため、データ伝送中のチャネル エラーをある程度検出して修正することはできますが、データに対する悪意のある損傷を防ぐことはできません。
MD5 ハッシュ アルゴリズムの「デジタル フィンガープリント」機能により、MD5 ハッシュ アルゴリズムは最も広く使用されているファイル整合性チェックサム (チェックサム) アルゴリズムになり、多くの Unix システムで md5 チェックサムを計算するためのコマンドが提供されます。
2) デジタル署名
ハッシュ アルゴリズムも、最新の暗号化システムの重要な部分です。非対称アルゴリズムは動作が遅いため、デジタル署名プロトコルでは一方向ハッシュ関数が重要な役割を果たします。 「デジタル ダイジェスト」とも呼ばれるハッシュ値へのデジタル署名は、ファイル自体にデジタル署名することと統計的に同等であると考えることができます。そして、このような合意には別の利点もあります。
3) 認証プロトコル
次の認証プロトコルは「チャレンジ認証モード」とも呼ばれます。これは、伝送チャネルを傍受できても改ざんできない場合のシンプルで安全な方法です。

関連記事:
php md5 暗号化と復号化アルゴリズムとツール (コード付き)
php md5 復号化コード共有 (インターフェイス付き、個人テストに利用可能)
php md5 暗号化は解読可能ですか?
MD5 暗号化ツール

以上がmd5は復号化できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。