>백엔드 개발 >PHP 튜토리얼 >md5를 해독할 수 있나요?

md5를 해독할 수 있나요?

阿神
阿神원래의
2017-03-14 22:47:3114671검색

md5와 접촉한 사람은 md5가 해독될 수 없다는 것을 알고 있지만 MD5를 해독할 수 있다고 주장하는 웹사이트가 왜 인터넷에 많이 있습니까? 이 기사에서는 이 문제를 논의할 것입니다.


우선 인터넷에 떠도는 것처럼, md5의 크랙된 버전은 되돌릴 수 있는 경우가 많지만, 그것들은 단지 사전을 실행하는 것에 기반을 두고 있습니다. 소위 사전 실행은 비교를 위해 일반적으로 사용되는 일부 단어와 구문의 md5 인코딩을 사용하는 것입니다. 알아채다! "일반적으로 사용되는" 입니다!
일반적으로 사용되는 의미를 이해하지 못하는 사람이 있다면 수학적 예를 들어 보겠습니다.
x=1, y=1이고 x=0, y=0이라고 가정하면, 이 함수에 대한 모든 사람의 첫 반응은 무엇입니까? y=x^n(n>0) 또는 (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비트 바이너리로 표현된 사전 패딩 정보 길이가 추가됩니다. 이 두 단계의 처리 후에 정보의 직접적인 길이는 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 중 세 개에 대해 비선형 함수 연산을 수행한 다음 그 결과를 네 번째 변수, 텍스트의 하위 그룹 및 상수에 추가합니다. 그런 다음 결과를 무한정 오른쪽으로 이동하고 a, b, c, d 중 하나를 추가합니다.


위의 예에서 우리는 md5가 모든 길이의 텍스트 내용을 128비트 해시 번호로 단순화한다는 것을 분명히 알 수 있습니다. 텍스트 내용에 문자 a가 하나만 포함되어 있든, 10,000단어가 넘는 긴 종이이든 관계없이 모두 128비트 해시 번호로 축소(또는 채워)됩니다. 이로 인해 크래킹이 거의 불가능해집니다.

왜 그런 말을 합니까? 지금의 예에서는 "x=0, when y=0; when x=1, y=1"이라는 결과를 말하지만 말하지 않습니다. (사실 아무도 문자 수를 세지 않습니다.) 문서에서) 이것은 어떤 종류의 함수입니까? 로그 함수입니까, 선형 함수입니까, 아니면 고차 함수입니까? 모르겠어요. 어떻게 해독할 수 있나요?

더욱이 실제로 암호화 분야에서는 DES와 RSA가 실제 암호화인 반면, MD5는 문서 검증에 더 많이 사용되고 문서 변조 여부를 감지하는 키를 생성하는 데 사용됩니다.

이것을 보고 나면 모든 사람이 md5는 복호화할 수 없다는 사실을 알게 될 것입니다


추가적으로 알아두면 좋은 점 2가지:

1.소위 암호화:

암호화 기술은 가장 일반적으로 사용되는 보안 및 기밀 유지 방법으로 중요한 데이터를 왜곡된 코드로 변환(암호화)하여 전송한 후 목적지에 도달한 후 동일하거나 다른 수단을 사용하여 복원(복호화)합니다.
암호화 기술은 두 가지 요소로 구성됩니다. 알고리즘은 일반 정보 또는 이해할 수 있는 정보를 숫자열과 결합하여 이해할 수 없는 암호문을 생성하는 단계이고, 키는 데이터를 암호화하고 해독하는 데 사용됩니다. 보안 및 기밀성 측면에서는 적절한 키 암호화 기술 및 관리 메커니즘을 통해 네트워크 정보 통신의 보안을 보장할 수 있습니다.

2.해시:

일반적으로 "해시"로 번역되지만 "해시"로 직접 음역되는 해시는 해시 알고리즘을 통해 임의 길이의 입력(사전 매핑, 사전 이미지라고도 함)을 고정 길이 입력으로 변환하는 것입니다. 출력은 해시 값입니다. 이 변환은 압축 매핑입니다. 즉, 해시 값의 공간은 일반적으로 입력 공간보다 훨씬 작습니다. 서로 다른 입력이 동일한 출력으로 해시될 수 있으며 해시 값에서 입력 값을 고유하게 결정하는 것은 불가능합니다. .
간단히 말하면 임의의 길이의 메시지를 고정 길이의 정보 다이제스트로 압축하는 기능입니다.
HASH는 주로 정보 보안 분야의 암호화 알고리즘에 사용됩니다. 이는 서로 다른 길이의 정보를 HASH 값이라고 하는 지저분한 128비트 코드로 변환합니다. 데이터 저장 주소 사이의 매핑 관계.
정보 보안에서 해시 알고리즘의 적용은 주로 다음 세 가지 측면에 반영됩니다.
1) 파일 검증
우리에게 더 익숙한 검증 알고리즘에는 패리티 검사와 CRC 검사가 포함됩니다. 데이터 변조에 저항하는 능력이 있습니다. 데이터 전송 시 채널 오류를 어느 정도 감지하고 수정할 수 있지만 데이터에 대한 악의적인 손상을 방지할 수는 없습니다.
MD5 해시 알고리즘의 "디지털 지문" 기능은 가장 널리 사용되는 파일 무결성 체크섬(체크섬) 알고리즘으로 많은 Unix 시스템에서 md5 체크섬 계산을 위한 명령을 제공합니다.
2) 디지털 서명
해시 알고리즘도 현대 암호화 시스템의 중요한 부분입니다. 비대칭 알고리즘은 느리게 작동하므로 단방향 해시 함수는 디지털 서명 프로토콜에서 중요한 역할을 합니다. "디지털 다이제스트"라고도 하는 해시 값의 디지털 서명은 파일 자체의 디지털 서명과 통계적으로 동일한 것으로 간주될 수 있습니다. 그리고 그러한 합의에는 다른 장점도 있습니다.
3) 인증 프로토콜
다음 인증 프로토콜은 "도전 인증 모드"라고도 합니다. 전송 채널을 가로챌 수는 있지만 변조할 수 없는 경우 간단하고 안전한 방법입니다.

관련 기사:
php md5 암호화 및 복호화 알고리즘 및 도구(코드 포함)
php md5 복호화 코드 공유(인터페이스, 개인 테스트 포함) 가능)
php md5 암호화를 해독할 수 있나요?
MD5 암호화 도구

위 내용은 md5를 해독할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.