2013-02-26 3 views
0

c를이 코드가 있습니다MD5 해시는 #

... 
    private void bBrowse_Click(object sender, EventArgs e) 
    { 

    OpenFileDialog ofd = new OpenFileDialog(); 
     if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
      { 
       string FileName = ofd.FileName; 
       tbKeyFile.Text = FileName; 
      } 
     if (!String.IsNullOrEmpty(tbKeyFile.Text)) 
     { 

      FileStream fs = new FileStream(tbKeyFile.Text, FileMode.Open); 

      MD5 hashFunction = MD5.Create(); 
      byte[] computedHashCode = hashFunction.ComputeHash(fs); 

      string HashInString = Convert.ToBase64String(computedHashCode); 

      lHash.Text = HashInString; 
     } 

    } 
... 

을하지만 MD5 해시를 계산 아니에요. SHA1 체크섬을 계산 중입니다. 내가 뭘 잘못 했니?

+1

그럴 가능성은 희박합니다. 어떻게 출력을 확인하고 있습니까? – SLaks

+1

'MD5.Create(). ComputeHash()'는 확실히 SHA1 해시를 반환하지 않습니다. – ken2k

+0

Base64 인코딩 된 출력으로 MD5 해시를 계산 중입니다. 16 진수로 인코딩 된 출력을 기대 했습니까? BitConverter.ToString (hash) .Replace ("-", "")는 16 진수로 인코딩 된 해시를 얻는 데 사용할 수 있습니다. – CodesInChaos

답변

1

CodesInChaos 다음과 같이 표시됩니다. MD5.ComputeHash()은 base64로 값을 반환합니다. 혼자서 16 진수 형식으로 변환해야합니다 (물론 원하는 경우). 이를 달성 할 수있는 방법의 예는 예 here 찾을 수있다 :

string HashInString = BitConverter.ToString(computedHashCode).Replace("-", ""); 

제공 예 올 : Base64

M1UOF9zlCe+LwCfDNcWGPw==33550e17dce509ef8bc027c335c5863f HEX 같다. 확인하려면 Base64 to Hex Converter을 사용하십시오!

+0

답변을 업데이트했습니다. 지금은 훨씬 더 명확하길 바래. – MarcinJuraszek

0

입력 : 출력을 213441dasses : M1UOF9zlCe + LwCfDNcWGPw == 예상 출력 : 실제 출력이되지 않은 상태에서 33550e17dce509ef8bc027c335c5863f

귀하의 예상 출력은 16 진수 문자열입니다. 현재 해시를 64 비트 기반 문자열로 변환 중입니다. 이는 원하는 것이 아닌 obvisouly입니다.

예상되는 16 진수 문자열을 해시에서 반환하는 방법은 this answer을 참조하십시오.

+0

링크의 "str"이 무엇인지 모르겠습니까? – Lasse

+0

@Lasse 당신이 해싱하는 문자열입니다. 중요한 부분은 "해시 문자열을 16 진수 문자열로 변환하려면 ..."입니다. – ken2k

+0

이제 귀하의 링크에서와 마찬가지로 완료했지만 여전히 잘못되었습니다. 예상 출력 33550e17dce509ef8bc027c335c5863f 출력 : C81414CA06C3AAA287AB6B2978A1DF38EEF308AF – Lasse