C# 및 PHP 파일의 MD5 체크섬을 확인하는 데 약간의 문제가 있습니다. PHP 스크립트로 계산 된 해시는 C#에서 계산 된 해시와 다릅니다.C# 및 PHP에서 다른 MD5 파일 해시
PHP에서libcurl.dll C# = c3506360ce8f42f10dc844e3ff6ed999
libcurl.dll PHP = f02b47e41e9fa77909031bdef07532af
나는 md5_file
기능을 사용하고, 내 C# 코드는 다음과 같습니다
protected string GetFileMD5(string fileName)
{
FileStream file = new FileStream(fileName, FileMode.Open);
MD5 md5 = new MD5CryptoServiceProvider();
byte[] retVal = md5.ComputeHash(file);
file.Close();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < retVal.Length; i++)
{
sb.Append(retVal[i].ToString("x2"));
}
return sb.ToString();
}
모든 아이디어를 어떻게 동일한 해시를 계산하는 방법? 나는 이것이 인코딩에 관한 것일 수도 있다고 생각한다.
미리 감사드립니다.
PHP 스크립트가'UTF-8' 또는'ISO-8859-1' 인코딩을 사용하는 동안 C#은'Windows-1250' 인코딩을 사용합니다. 양쪽 모두 인코딩을 동일하게 만드십시오. – shadyyx
커맨드 라인 도구'md5sum'과 어떻게 비교 될까요? –
을 FileStream과 함께 사용하면 포인터가 begening에 있음을 알릴 수 없습니다. 그것을 보장하기 위해 file.Seek (0, SeekOrigin.Begin)을 사용하십시오. msdn의 모든 예는 FileStream 생성자 다음에 사용합니다. – Xaruth