MD5 입 / 출력의 최대 길이


답변:


240

MD5는 임의 길이의 메시지를 128 비트의 고정 길이 출력으로 처리하며 일반적으로 32 개의 16 진수 시퀀스로 표시됩니다.


95
자체 참고 사항 : MD5 해시 길이 = 128 bits= 16 bytes=32 hex digits
체크섬

2
[일반 편집] 32 개의 16 진수와 문자열에는 'az'의 단어와 '0-9'의 숫자 만 포함
v1h5 10

1
이전 의견에서 약간의 실수를 발견했습니다. 텍스트는 인용해야합니다 :) "32 개의 16 진수 숫자와 문자열 은 'az'의 문자 와 '0-9'의 숫자 만 포함합니다. '
Remis B

2
@Shafizadeh 답변 상태에 따라 입력의 길이는 임의입니다. 이는 매개 변수가 원하는 길이 일 수 있음을 의미합니다.
kdojeteri

1
@Peping 작은 수정 : 사용 된 프로그래밍 언어에서 사용 된 데이터 유형이 될 수있는 한 입력 길이가 길 수 있습니다. 예 : Java 문자열은 내부적으로 배열을 사용하므로 문자열은 (2 ^ 31) -1 문자 (또는 힙 크기에 따라 그 이하) 만 포함 할 수 있습니다. 또한 Java에서 MD5 함수의 최대 입력 값이됩니다. 그러나 이론적으로 순수한 MD5 함수는 실제로 임의 길이의 입력을 처리 할 수 ​​있습니다. ;)
RicoBrassers

38
  • 메시지의 길이는 무제한 입니다.

추가 길이

b의 64 비트 표현 (패딩 비트가 추가되기 전의 메시지 길이)이 이전 단계의 결과에 추가됩니다. b가 2 ^ 64보다 큰 경우는 드물지만 b의 하위 64 비트 만 사용됩니다.

  • 해시는 항상 128 비트입니다. 16 진 문자열로 인코딩하면 문자 당 4 비트를 인코딩하여 32자를 제공 할 수 있습니다.
  • MD5는 암호화가 아닙니다. 일반적으로 MD5 해시를 "암호 해독"하여 원래 문자열을 가져올 수 없습니다.

자세한 내용은 여기를 참조 하십시오 .


메시지의 길이는 제한이 없습니다 , 당신은 무엇을 의미합니까 메시지를 ? 입력입니까? 내 질문은MD5("how many characters exactly?");
Shafizadeh

@Shafizadeh 입력은 현재 프로그래밍 언어에서 가능한 한 길 수 있습니다. Java의 경우 문자열에서 (2 ^ 31) -1 문자입니다. 그리고 네, "메시지"가 입력입니다.
RicoBrassers

@Shafizadeh ... 또는 파일에서 입력이 사용 가능한 스토리지만큼 클 수 있습니다.
ToolmakerSteve

9

길이는 얼마든지 가능하지만 문자열 입력이 너무 길면 컴퓨터에 메모리 문제가있을 수 있습니다. 출력은 항상 32 자입니다.


4
문자열 입력이 너무 길면 처음에는 시스템에 존재하지 않습니다. 파일에 있지 않으면 블록을 읽을 때 다이제스트 함수에 블록을 전달할 수 있습니다. 즉, 필요한 경우에만 이하기 block한 번에 바이트의 입력이 가능합니다.
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳

6

이 알고리즘은 임의의 입력 길이를 지원하도록 설계되었습니다. 즉, ISO DVD와 같은 큰 파일의 해시를 계산할 수 있습니다 ...

입력에 대한 제한이 있으면 해시 함수가 사용되는 환경에서 올 수 있습니다. 파일을 계산하려고하고 환경에 MAX_FILE 제한이 있다고 가정 해 봅시다.

그러나 출력 문자열은 항상 동일합니다 : 32 16 진수 (128 비트)!



4

MD5 대신 SHA-1 을 사용할 수 있습니다. MD5가 깨진 것으로 간주됩니다로서.

이 Wikipedia 기사 에서 MD5 취약성에 대한 자세한 내용을 볼 수 있습니다 .


5
이것은 소문에 지나지 않습니다. MD5는 대부분의 일반적인 웹 개발 작업에 충분합니다
Common Sense

11
Bruce Schneier와 Homeland Security는 물론 제작자도 그것이 깨 졌다는 데 동의하고 있습니다. 얼마나 많은 '럼프스 프 레딩'이 실제로 한동안 실제로 고장났다는 것을 확신시키기 위해 얼마나 많은 '럼프스 프 레딩'이 필요합니까? 사실 특정 해시를 생성하는 입력을 임의로 찾기가 쉽다는 것입니다. 물론 충분히 큰 소금을 사용하여 투입물에 소금을 뿌려이 위험을 완화 할 수 있습니다. 참고 사항 : SHA-1은 파손 된 것으로 간주됩니다. 사람들에게 업그레이드하도록 조언하는 경우 SHA-2로 업그레이드하도록 조언하십시오.
kander

3
@ kander 오, 나는 아주 조금 필요합니다. 예입니다. 해시가 주어지면 소스 문자열을 가져올 것입니까? 훌륭한 기사에 대한 링크가 아니라 누군가의 의견이 아니라 단지 소스 문자열입니까?
당신의 상식

2
"파손 된"이라는 용어에서 그들이 실제로 무엇을 의미하는지 언급 한 사람은 아무도 없습니다. 그러나 @YourCommonSense가 의미가 있습니다.
JSmyth

4
MD5의 보안 사용에 대해 이야기하고 있습니다. 그러나 MD5 (또는 다른 해싱 기술)에는 많은 다른 용도가 있습니다. 우선 해시로 파일 이름을 바꾸는 데 사용하고 싶습니다. MD5의 충돌 저항에 대해서는 걱정하지 않습니다. 당신이 게시 한 모든 것은 여전히 ​​내 2 센트입니다.
tfrascaroli

3

내가 아는 md5의 입력에는 제한이 없습니다. 일부 구현에서는 md5 함수에 전달하기 전에 전체 입력을 메모리에로드해야합니다 (즉, 구현은 스트림이 아니라 메모리 블록에 대해 작동 함). 그러나 이는 알고리즘 자체의 제한 사항이 아닙니다. 출력은 항상 128 비트입니다. md5는 암호화 알고리즘이 아니라 암호화 해시입니다. 즉, 데이터 청크의 무결성을 확인하는 데 사용할 수 있지만 해싱을 되돌릴 수는 없습니다. 또한 md5는 손상된 것으로 간주되므로 보안 관련 용도로 사용해서는 안됩니다 (다운로드 한 파일의 무결성을 확인하는 것이 좋습니다).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.