기금넷 공식사이트 - 주식 지식 - 16주기의 4라운드 MD5의 역할(수학적 원리)
16주기의 4라운드 MD5의 역할(수학적 원리)
글쎄, 매우 복잡해요. 이것은 컴퓨터의 해시 함수입니다. 수학적 해시 알고리즘의 원리입니다.
MD5 알고리즘에 대한 간략한 설명은 다음과 같습니다. MD5는 512비트 그룹을 사용하여 입력 정보를 처리하고 각 그룹은 16개의 32비트 하위 그룹으로 나누어집니다. 일련의 처리를 거쳐 알고리즘은 출력은 4개의 32비트 블록으로 구성되며, 연결되면 128비트 해시 값이 생성됩니다. MD5 알고리즘에서는 먼저 비트 길이 512의 나머지 부분이 448이 되도록 정보를 채워야 합니다. 따라서 정보의 비트 길이(Bits Length)는 N*512 448로 확장되며, N은 음수가 아닌 정수이고, N은 0이 될 수 있습니다. 채우는 방법은 다음과 같습니다. 정보 뒤에 1과 수많은 0을 채우고, 위 조건이 충족될 때까지 정보를 0으로 채우는 것을 중지합니다. 그런 다음 이 결과에는 64비트 바이너리로 표현된 사전 패딩 정보 길이가 추가됩니다. 이 두 단계의 처리 후 정보의 현재 비트 길이는 =N*512 448 64=(N 1)*512입니다. 즉, 길이는 정확히 512의 정수 배수입니다. 그 이유는 후속 처리에서 정보 길이에 대한 요구 사항을 충족하기 때문입니다. MD5에는 체인 변수(Chaining Variables)라고 하는 4개의 32비트 정수 매개변수가 있습니다: A=0x67452301, B=0xefcdab89, C=0x98badcfe, D=0x10325476. 이러한 4개의 링크 변수를 설정한 후 알고리즘의 4라운드 루프 작동이 시작됩니다. 주기 수는 메시지의 512비트 정보 패킷 수입니다. 위의 4개 링크 변수를 다른 4개 변수(A에서 a, B에서 b, C에서 c, D에서 d)에 복사합니다. 메인 루프에는 4개의 라운드가 있으며(MD4에는 3개의 라운드만 있음) 각 루프는 매우 유사합니다. 첫 번째 라운드에는 16개의 작업이 있습니다. 각 연산은 a, b, c, d 중 세 개에 대해 비선형 함수 연산을 수행한 다음 그 결과를 네 번째 변수, 텍스트의 하위 그룹 및 상수에 추가합니다. 그런 다음 결과를 무한정 왼쪽으로 이동하고 a, b, c 또는 d 중 하나를 추가합니다. 마지막으로 a, b, c, d 중 하나를 이 결과로 바꿉니다. 다음은 각 작업(라운드당 하나)에 사용되는 4개의 비선형 함수입니다. F(X,Y,Z) =(Xamp;Y)|((~X)amp;Z) G(X,Y,Z) =(Xamp;Z)|(Yamp;(~Z)) H(X , Y, Z) =X^Y^Z I (X, Y, Z) = Y^ ( 각 함수 설명: X, Y, Z의 해당 비트가 독립적이고 균일한 경우 결과의 각 비트는 다음과 같아야 합니다. 또한 독립적이고 균일해야 합니다. F는 비트 단위로 동작하는 함수이다. 즉, X이면 Y이고, 그렇지 않으면 Z입니다. 함수 H는 비트 패리티 연산자입니다. Mj가 메시지의 j번째 하위 그룹(0~15)을 나타내고, 상수 ti는 4294967296*abs(sin(i))의 정수 부분이고, i의 범위는 1~64이며, 단위는 라디안이라고 가정합니다.
(4294967296은 2의 32승과 같습니다.) FF(a, b, c, d, Mj, s, ti)는 a = b ((a F(b, c, d) Mj ti) lt;lt; s) GG(a, b, c, d, Mj, s, ti)는 a = b((a G(b, c, d) Mj ti) lt; lt; s) HH(a, b, c, d, Mj , s, ti)는 a = b ((a H (b, c, d) Mj ti) lt; lt; s) II (a, b, c, d, Mj, s, ti)는 a를 의미합니다. = b ( (a I(b, c, d) Mj ti) lt; lt; s) 이 네 라운드(64단계)는 다음과 같습니다. 첫 번째 라운드 FF(a, b, c, d, M0, 7, 0xd76aa478) FF(d, a, b, c, M1, 12, 0xe8c7b756) FF (c, d, a, b, M2, 17, 0x242070db) FF (b, c, d, a, M3, 22, 0xc1bdceee) FF ( a, b, c, d, M4, 7, 0xf57c0faf) FF(d, a, b, c, M5, 12, 0x4787c62a) FF(c, d, a, b, M6, 17, 0xa8304613) FF(b, c, d, a, M7, 22, 0xfd469501) FF(a, b, c, d, M8, 7, 0x698098d8) FF(d, a, b, c, M9, 12, 0x8b44f7af) FF(c, d, a, b, M10, 17, 0xffff5bb1) FF(b, c, d, a, M11, 22, 0x895cd7be) FF(a, b, c, d, M12, 7, 0x6b901122) FF(d, a, b, c, M13 , 12, 0xfd987193) FF (c, d, a, b, M14, 17, 0xa679438e) FF (b, c, d, a, M15, 22, 0x49b40821) 2차 GG (a, b, c, d, M1, 5, 0xf61e2562) GG(d, a, b, c, M6, 9, 0xc040b340) GG(c, d, a, b, M11, 14, 0x265e5a51) GG(b, c, d, a, M0, 20, 0xe9b6c7aa) GG(a, b, c, d, M5, 5, 0xd62f105d) GG(d, a, b, c, M10, 9, 0x02441453) GG(c, d, a, b, M15, 14, 0xd8a1e681) GG(b, c, d, a, M4, 20, 0xe7d3fbc8) GG(a, b, c, d, M9, 5, 0x21e1cde6) GG(d, a, b, c, M14, 9, 0xc33707d6) GG(c, d, a, b, M3, 14, 0xf4d50d87) GG(b, c, d, a, M8, 20, 0x455a14ed) GG(a, b, c, d, M13, 5, 0xa9e3e905) GG(d, a, b, c, M2, 9, 0xfcefa3f8) GG(c, d, a, b,
M7, 14, 0x676f02d9) GG (b, c, d, a, M12, 20, 0x8d2a4c8a) 3라운드 HH (a, b, c, d, M5, 4, 0xfffa3942) HH (d, a, b, c , M8, 11, 0x8771f681) HH(c, d, a, b, M11, 16, 0x6d9d6122) HH(b, c, d, a, M14, 23, 0xfde5380c) HH(a, b, c, d, M1, 4, 0xa4beea44) HH(d, a, b, c, M4, 11, 0x4bdecfa9) HH(c, d, a, b, M7, 16, 0xf6bb4b60) HH(b, c, d, a, M10, 23 , 0xbebfbc70) HH(a, b, c, d, M13, 4, 0x289b7ec6) HH(d, a, b, c, M0, 11, 0xeaa127fa) HH(c, d, a, b, M3, 16, 0xd4ef3085 ) HH(b, c, d, a, M6, 23, 0x04881d05) HH(a, b, c, d, M9, 4, 0xd9d4d039) HH(d, a, b, c, M12, 11, 0xe6db99e5) HH( c, d, a, b, M15, 16, 0x1fa27cf8) HH (b, c, d, a, M2, 23, 0xc4ac5665) 4차 II (a, b, c, d, M0, 6, 0xf4292244) II( d, a, b, c, M7, 10, 0x432aff97) II(c, d, a, b, M14, 15, 0xab9423a7) II(b, c, d, a, M5, 21, 0xfc93a039) II( a, b, c, d, M12, 6, 0x655b59c3) II(d, a, b, c, M3, 10, 0x8f0ccc92) II(c, d, a, b, M10, 15, 0xffeff47d) II(b, c, d, a, M1, 21, 0x85845dd1) II(a, b, c, d, M8, 6, 0x6fa87e4f) II(d, a, b, c, M15, 10, 0xfe2ce6e0) II(c, d, a, b, M6, 15, 0xa3014314) II(b, c, d, a, M13, 21, 0x4e0811a1) II(a, b, c, d, M4, 6, 0xf7537e82) II(d, a, b, c, M11, 10, 0xbd3af235) II(c, d, a, b, M2, 15, 0x2ad7d2bb) II(b, c, d, a, M9, 21, 0xeb86d391) 모두 완료한 후 A, B, a를 추가합니다. , b, c, d를 각각 C 및 D로 변경합니다. 그런 다음 다음 데이터 그룹으로 알고리즘을 계속 실행하면 최종 출력은 A, B, C 및 D의 계단식입니다. 위에서 언급한 방법에 따라 MD5 알고리즘을 구현한 후, 다음 정보를 이용하여 작성한 프로그램에 대해 간단한 테스트를 수행하여 프로그램에 오류가 있는지 확인할 수 있습니다.
MD5 ("") = d41d8cd98f00b204e9800998ecf8427e MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661 MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72 MD5 ( "메시지 다이제스트") = f96b697d7cb7938d525a2f31aaf161d0 ijklmnopqrstuvwxyz") = f29939a25efabaef3b87e2cbfe641315 p>
- 관련 기사
- 스타들은 스포트라이트를 받기 위해 어떤 이상한 의상을 입나요?
- 약 100,000대의 연료 효율을 지닌 합작 자동차의 가치는 무엇입니까?
- 킹콩맨 전기 렌치는 어떻습니까?
- Jia Zhangke는 연예계가 다른 방법으로 이끌어야 하며 배우들은 자격증을 가지고 일해서는 안 된다고 말했습니다.
- '더블스타' 황종영
- *** 차량 위반을 적발하는 데 얼마나 걸리나요?
- 구의 스트로크 순서
- Old Nine Gates에서 William Chan과 Zhao Liying의 키스신은 어떤 에피소드인가요? William Chan과 Zhao Liying의 키스신 사진과 영상은 어떤 에피소드인가요?
- 투명한 소프트 도어 커튼에서 유독 냄새가 나나요?
- 세계엑스포국의 주요 지도자들