プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

MD5アルゴリズムはどのように機能しますか?


メッセージのメッセージダイジェストを計算するために実行される次の手順は次のとおりです-

  • ステップ1-パディングビットを追加する −メッセージは、ビット単位の全長が512を法とする448と一致するような方法で継続またはパディングされます。この操作は、メッセージのビット長が元々512を法とする448と一致する場合でも継続的に実装されます。448+ 64 =512、したがって、メッセージは、その長さが64ビットから512の整数倍を引いたものになるように埋め込まれます。

  • ステップ2-長さを追加 −元のメッセージMのビット単位の長さの64ビット記述(パディングビットが挿入される前)がステップ1の結果に追加されます。元のメッセージの長さが264 =184 467 440 73709551より大きい場合したがって、メッセージMの長さの下位64ビットのみが使用されます。

    したがって、フィールドには、264を法とする元のメッセージの長さが含まれます。これらのビットは2つの32ビットワードとして追加され、最初に下位(最下位)ワードが追加されます。ステップ1とステップ2の結果は、次の長さのメッセージです。 512ビットの整数倍であるビット。

  • ステップ3-MDバッファを初期化する − 128ビットのバッファを使用して、MD5ハッシュアルゴリズムの中間結果と最後の結果を保持できます。 4ワードのバッファ(A、B、C、およびD)を使用して、メッセージダイジェストを評価できます。したがって、各A、B、C、Dは32ビットレジスタです。

    これらのレジスタは、最初に16進数の下位バイトで次の値まで起動します-

    ワードA:01 23 45 67

    単語B:89 ab cd ef

    ワードC:fe dc ba 98

    単語D:76 54 32 10

  • ステップ4-512ビット(16ワード)ブロックでメッセージを処理する −圧縮機能には、4ラウンドの処理が含まれます。各ラウンドは、処理されている現在の512ビットブロックの入力を作成します(Y q )および128ビットバッファ値ABCDを使用して、バッファの要素を更新します。

    それぞれが入力として3つの32ビットワードを作成し、出力として1つの32ビットワードを生成する4つの補助関数を記述できます。

    F(X、Y、Z)=XY v not(X)Z

    G(X、Y、Z)=XZ v Y not(Z)

    H(X、Y、Z)=X xor Y xor Z

    I(X、Y、Z)=Y xor(X v not(Z))

    各ビット位置で、Fは条件付きとして機能します。Xの場合はY、それ以外の場合はZです。X(Z)ではなくXYが同じビット位置に1を持つことはないため、関数Fはvの代わりに+を使用して表すことができます。

  • ステップ5-出力 −メッセージダイジェストは、A、B、C、Dを含む出力を作成しました。最終ラウンドからの出力は、メッセージのすべてのt512ビットブロックを増分処理した後に取得できる128ビットハッシュ結果またはメッセージダイジェストです。 。


  1. YouTube アルゴリズムの仕組み

    YouTube のおすすめセクションは、視聴者が新しい動画を探すために最も頻繁に訪れる場所です。ここにある動画は、ユーザーが視聴する可能性が最も高いと YouTube が判断した動画をクリックするように、ユーザーに合わせて調整されています。しかし、これらのビデオはどのように選ばれるのでしょうか? ほとんどの人は、このプロセスを YouTube アルゴリズムと呼んでいます。これは、サイトがどの動画をユーザーのおすすめセクションに入れるかを計算する方法です。また、ユーザーの検索結果にも影響します。したがって、このアルゴリズムがどのように機能するかを知ることは、クリエイターがより多くの視聴者にリー

  2. Windows レジストリとその仕組みとは?

    Windows レジストリは、構成、値、 Windows アプリケーションのプロパティと、単一のリポジトリに階層的に編成および格納されている Windows オペレーティング システム。 新しいプログラムが Windows システムにインストールされるたびに、サイズ、バージョン、ストレージ内の場所などの属性を含むエントリが Windows レジストリに作成されます。 この情報はデータベースに保存されているため、使用されているリソースをオペレーティング システムが認識しているだけでなく、他のアプリケーションもこの情報から利益を得ることができます。特定のリソースまたはファイルが共存する場合に発