2010-04-04 4 views
2

MD5에 "나는 우유를 사고 싶다"와 같은 문구를 변환하는 방법을 누군가에게 설명 할 수 있습니까? 나는 MD5에 위키 백과 문서를 읽을 수 있지만 주어진 설명은 내 상상을 초월있다 :.구문과 단어를 MD5 해시로 변환하는 방법은 무엇입니까?

은 "MD5는 128 비트의 고정 길이 출력으로 가변 길이 메시지를 처리하는 입력 메시지가 을 깨 512 비트 블록 (여섯 32 비트 리틀 엔디안 정수) "

"열 여섯 32 비트 리틀 엔디안 정수의 덩어리로 "나를 위해 열심히 이미. 나는 작은 엔디안들에 대한 Wiki 기사를 점검했고 조금 이해하지 못했다.

그러나, 위키 문서의 일부 문구와 자신의 MD5 해시의 예는 아주 좋은입니다

MD5 = 9e107d9d372bb6826bd81d3542a419d6

("빠른 갈색 여우가 게으른 개 점프")

MD5는 ("빠른 갈색 여우. 통해 게으른 개를 뛰어") e4d909c290d0fb1ca068ffaddf22cbd0

을 = 누구든지,이 MD5 알고리즘이 몇 가지 간단한 예제를 사용하여 어떻게 작동하는지 설명해 주시겠습니까?

또한 어쩌면 구문을 MD5로 변형시키는 일부 소프트웨어 또는 코드를 알고있을 것입니다. 그렇다면 알려주세요.

+1

MD5의 내부 동작에 대한 자세한 설명을 원하십니까? 아니면 특정 언어로 해시를 계산하는 방법을 알고 싶습니까? –

+0

안녕하세요, Matti !!! 계산하고 싶습니다. 나는 MD5의 모든 작용을 이해하지 못하는 것 같아 두렵다. – brilliant

+2

당신은 어떤 언어를 사용하고 있습니까? 대부분의 언어는 현재 해시를 지원합니다. 또한, 해시 알고리즘이 어떻게 작동하는지 실제로 읽지는 못했습니다. 나는 그것을 암호화 된 사람들에게 맡긴다. MD5는 더 이상 안전하지 않다고 생각합니다. 무지개 테이블 (http://en.wikipedia.org/wiki/Rainbow_table)과 같은 것들을 사용하여 비교적 빨리 깨질 수 있습니다. –

답변

2

엔디안을 잊어 버리십시오. 정보를 인코딩하는 방법의 이름 일뿐입니다.

위키 백과 MD5 문서를 따르십시오. 입력 메시지로 시작합니다. 임의로 길어질 수 있습니다. 암호에 대해 12 자 길이의 문자열 해시처럼 2GB ISO 파일에 대한 MD5 해시가 일상적으로 만들어집니다.

해시는 a, b, cd 레지스터에 포함됩니다. 이 레지스터는 특별한 값 (h0-h3)으로 초기화됩니다.

알고리즘은 16 개의 4 바이트 청크 ("여섯 32 비트 리틀 엔디안 단어")로 입력을 중단하고, 입력 전류의 부분에 특정 논리 연산 (함수 F, G, HI)을 적용 레지스터 상태는 a, b, cd입니다. 16 개의 4 바이트 덩어리 세트마다 64 번 수행합니다.

청크의 모든 처리

a, b, cd에 남아 무엇을 최종 해시, 당신은 md5sum testfile.txt를 호출하여 얻을 수있는 것입니다.

업데이트 :

가 거기에 아마 모든 중요한 언어에 대해 완료 및 테스트 한 것 때문에 자신이 이해되지 않는다 구현

그냥 해시를 계산 할 수있게하려면, :

Python :

import md5 
md5.new("Nobody inspects the spammish repetition").digest() 

SQL (MySQL) :

SELECT MD5('Nobody inspects the spammish repetition') 
,

Java :

String s="Nobody inspects the spammish repetition"; 
MessageDigest m=MessageDigest.getInstance("MD5"); 
m.update(s.getBytes(),0,s.length()); 
System.out.println(new BigInteger(1,m.digest()).toString(16)); 

+0

Tomislav,이 대답에 감사드립니다. 나는 당신의 대답을 지금 공부하고 있습니다. – brilliant

+0

와우! Tomislav,이 업데이트에 대해 대단히 감사합니다 !!!! – brilliant

1

Md5는 해시 알고리즘입니다. 입력의 모든 문자를 변경하면 서명에 예측할 수없는 상당한 영향을 줄 수 있도록 입력 텍스트의 서명을 생성합니다.

예를 들어

'2bb1a5a5204aba95c886b3eb598c9d41'추가 기간이 동일한 텍스트의

는 MD5 서명이

텍스트 '이 매우 정상적인 보이는 아주 짧은 텍스트입니다'의 MD5 서명입니다 ' 이것은 아주 평범 해 보이는 아주 짧은 텍스트입니다. ' '870df12558aae47b40bf738290ba8554'

표시되는 바와 같이 서명이 크게 다릅니다. 이 속성은 md5를 '핑거 프린팅'유형으로 적합하게 만듭니다. 한 글자 만 다른 두 권의 책은 완전히 다른 md5를 갖습니다. 또한 두 책은 서로 다른 도서의 두 세트에서 거의 동일하지 않습니다. 충돌은 극히 드뭅니다.

여러 온라인 버전 (here is one)을 포함하여 md5의 많은 구현이 있습니다. 특정 언어로 된 원한다면 어느 것을 지정하십시오.

+0

와우! 이 링크에 대해 대단히 고맙습니다. 언어를 지정하는 것을 잊어 버려서 죄송합니다 - 저는 Python에 관심이 있습니다. – brilliant

0

MD5 끔찍하게 깨진 년 동안하고있다. 가능하다면 어떤 목적으로도 사용하지 마십시오. 새로운 응용 프로그램에서는 SHA-256과 같은 SHA-2 해시 함수를 사용하십시오.

+0

Paul, 감사합니다. – brilliant

관련 문제