Computer >> 컴퓨터 >  >> 프로그램 작성 >> 프로그램 작성

MD5 알고리즘은 어떻게 작동합니까?

<시간/>

다음과 같은 themesage의 메시지 다이제스트를 계산하기 위해 다음 단계가 수행됩니다. -

  • 1단계 - 패딩 비트 추가 - 메시지는 비트 단위의 전체 길이가 448 모듈로 512와 일치하는 방식으로 계속되거나 채워집니다. 이 작업은 메시지의 비트 길이가 원래 448 모듈로 512와 일치하더라도 계속 구현됩니다. 448 + 64 =512, 따라서 메시지는 길이가 64비트에서 512의 정수 배수가 되도록 채워집니다.

  • 2단계 - 길이 추가 - 원본 메시지 M(패딩 비트가 삽입되기 전)의 길이에 대한 64비트 설명이 1단계의 결과에 추가됩니다. 원본 메시지의 길이가 264보다 긴 경우 =184 467 440 73 709 551 616이므로 메시지 M 길이의 하위 64비트만 사용됩니다.

    따라서 이 필드에는 원래 메시지 M 모듈로 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비트 블록(Yq ) 및 128비트 버퍼 값 ABCD 및 버퍼의 요소를 업데이트합니다.

    각각 3개의 32비트 워드를 입력으로 생성하고 32비트 워드를 출력으로 생성하는 4개의 보조 기능을 설명할 수 있습니다.

    F(X, Y, Z) =XY v가 (X) Z가 아님

    G(X, Y, Z) =XZ v Y(Z) 아님

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

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

    각 비트 위치에서 F는 조건부 역할을 합니다. X이면 Y이면 Z입니다. 함수 F는 X(Z)가 아닌 XY가 있기 때문에 v 대신 +를 사용하여 나타낼 수 있습니다. 유사한 비트 위치에서 1이 없을 것입니다.

  • 5단계 – 출력 - 메시지 요약은 A, B, C, D를 포함하는 출력을 생성했습니다. 최종 라운드의 출력은 128비트 해시 결과 또는 메시지의 모든 t 512비트 블록을 점진적으로 처리할 수 있는 후 획득할 수 있는 메시지 요약입니다. .