MD5는 소프트웨어 업계에서 매우 일반적인 용어입니다. 사용해 본 적이 없고 그것이 무엇인지 모르더라도 들어본 적이 있을 것입니다.
그럼 MD5란 정확히 무엇인가요? 암호화 알고리즘인가요? 아니요, md5는 정보 다이제스트 알고리즘입니다. 특정 규칙에 따라 문자열이나 파일에서 특수 문자열을 생성할 수 있습니다(이 특수 문자열을 요약이라고 합니다. 파일에서 일부 정보 조각을 발췌하여 처리됨). , 파일에 해당하는 MD5 다이제스트는 고정되어 있으므로 파일 내용이 변경되면 해당 MD5 값도 달라집니다(이론적으로는 동일할 수 있지만 확률은 매우 낮음). 따라서 MD5 값은 종종 데이터 조각이 변조되었는지 여부를 확인하기 위해 응용 프로그램에서 사용됩니다.
예를 들어, 데이터를 보낸 사람은 원본 데이터에서 MD5 값을 생성한 다음 원본 데이터와 MD5 값을 수신자에게 전송합니다. 수신한 데이터는 먼저 MD5 알고리즘을 사용하여 원본 데이터를 생성합니다. 요약 정보를 생성한 다음, 이 요약 정보를 보낸 사람이 보낸 요약 정보와 비교하여 일치하면 원본 데이터가 수정되지 않은 것으로 간주하고, 그렇지 않으면 원본 데이터가 수정된 것으로 간주합니다.
MD5 값에는 다음과 같은 몇 가지 특성이 있습니다.
1. 고정 길이 데이터, 즉 "0"과 "1"로 구성된 128비트 바이너리 데이터입니다. 원본 데이터의 길이에 관계없이 MD5 값은 128비트입니다.
2. 일반적으로(또는 업계 규정) 이 128비트 데이터는 4비트에 따라 32개의 그룹으로 나누어집니다. 각 그룹은 해당 값을 16진수로 계산하여 각 값을 문자 형식으로 출력합니다. 예를 들어 16진수 데이터 집합의 계산된 값은 0-9이고, 인쇄된 값도 0-9일 경우, 계산된 값이 a-f인 경우 직접 인쇄하면 10-15까지 사용할 수 있습니다. Java에서 format("%02x", bytes[i]) 메소드는 16진수 a-f를 문자 "a-f"로 인쇄합니다. 마지막으로 128비트 데이터는 32비트 문자열로 인쇄됩니다. 따라서 우리가 일반적으로 MD5 값이라고 부르는 것은 "0-9, a-f"로 구성된 이 32비트 문자열을 나타냅니다. 32비트가 아닌 MD5가 보이거나 "0~f" 이외의 문자가 포함되어 있으면 잘못된 MD5 값임에 틀림 없습니다.
3. 결정성. 원본 데이터의 MD5 값은 고유합니다. 동일한 원본 데이터에 대해 여러 개의 다른 MD5 값을 계산하는 것은 불가능합니다.
4. 충돌. 원본 데이터와 해당 MD5 값이 일대일 대응이 아닙니다. 여러 원본 데이터에서 계산된 MD5 값이 동일할 수 있습니다.
5. 되돌릴 수 없습니다. 즉, MD5 값을 알려준다면 이를 통해 원래 데이터를 복원할 수 없습니다. 이는 기술이 부족해서가 아니라 해당 알고리즘 때문입니다. 왜냐하면 4번 항목에 따르면 주어진 MD5 값은 다수의 원본 데이터에 해당할 수 있고 이론적으로는 무한한 수의 원본 데이터에 해당할 수 있으므로 어떤 원본 데이터가 생성되는지 판단하는 것이 불가능하기 때문입니다.
위 내용은 md5가 뭐야?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!