2011-04-28 6 views
20

MD5와 C#을 사용하여 PHP에서 문자열 해시를 시도했지만 결과가 다릅니다 .. 누군가가 어떻게이 일치하는 방법을 설명 할 수 있습니까?MD5 해시가 C# 및 PHP에서 일치하지 않습니다

내 C# 코드 사전

편집에

같은
md5 = new MD5CryptoServiceProvider(); 
      originalBytes = ASCIIEncoding.Default.GetBytes(AuthCode); 
      encodedBytes = md5.ComputeHash(originalBytes); 

      Guid r = new Guid(encodedBytes); 
      string hashString = r.ToString("N"); 

감사를 보이는 : 내 문자열이 문자열

출력 123입니다;

PHP : 202cb962ac59075b964b07152d234b70이

C 번호 : 62b92c2059ac5b07964b07152d234b70

+0

해시하려고 시도한 문자열 또는 사용하려고 시도한 PHP 코드를 표시하지 않았습니다. –

+0

귀하의 의견은 무엇입니까? 그리고 동등한 PHP 코드는 무엇입니까? –

+0

http://stackoverflow.com/questions/821817/php-md5-algorithm-that-gives-same-result-as-c/821846#821846 –

답변

31

귀하의 문제가 여기에 있습니다 :

Guid r = new Guid(encodedBytes); 
string hashString = r.ToString("N"); 

난 당신이 GUID를로 인코딩 된 바이트를로드하는 이유를 잘 모르겠지만,이 즉 바이트를 다시 문자열로 변환하는 올바른 방법은 아닙니다. 대신 BitConverter을 사용하십시오.

string testString = "123"; 
byte[] asciiBytes = ASCIIEncoding.ASCII.GetBytes(testString); 
byte[] hashedBytes = MD5CryptoServiceProvider.Create().ComputeHash(asciiBytes); 
string hashedString = BitConverter.ToString(hashedBytes).Replace("-", "").ToLower(); 
// hashString == 202cb962ac59075b964b07152d234b70 
+2

Juliet ... Perfect !!!! 고마움 백만 메이트! – megazoid

관련 문제