0
public static string GetMD5HashFromFile(string fileName)
{
using(var md5 = MD5.Create())
{
try
{
using(var stream = File.OpenRead(fileName))
{
byte[] HashArray;
StringBuilder sb = new StringBuilder(256);
int i = 0;
sb.Append("0x");
HashArray = md5.ComputeHash(stream);
for(i = 0; i < HashArray.Length; i++)
{
sb = sb.Append(String.Format("{0:X2}", HashArray[i]));
}
return sb.ToString();
}
}
catch(Exception)
{
return null;
}
}
}
위의 GetMD5HashFromFile 함수를 사용하여 파일의 해시 값을 가져오고 동일한 지 확인하십시오.견인 docx 파일이 동일한 지 확인하는 방법은 무엇입니까?
및 1.docx 파일을 만들고 2.docx로 저장하십시오.이 두 파일의 해시가 동일하지 않습니다. 나는 왜, 누군가가 내게 질문 할 수 있는지 또는 내 질문을 해결하기위한 팁을 줄 수 있는지를 모른다.
Docx 파일은 기본적으로 Zip 아카이브입니다. 두 번째 파일의 Zip 파일 항목에는 날짜/시간 소인이 서로 다를 수 있습니다. docx 파일을 작성하는 데 사용한 응용 프로그램에 따라 두 번째 docx 파일에 다른 메타 데이터가 포함되어있을 수도 있습니다 (예 : 마지막으로 문서를 저장/수정 한 시점, 문서 작성자, 응용 프로그램 작성자 docx, etc ...) 첫 번째 docx보다. – elgonzo
FYI 1 : StringBuilder를 256 자의 초기 용량으로 초기화합니다. MD5는 128 비트 길이 또는 16 바이트입니다. 16 진수 표기법으로 16 바이트를 표시하려면 32 자만 필요합니다. 따라서 초기 용량 32로 StringBuilder를 초기화 할 수 있습니다. – elgonzo
FYI 2 : StringBuilder 자체에 형식 문자열을 사용하는 AppendFormat (...) 오버로드가 있습니다. 그래서 당신은 string.Format을 사용할 필요가 없지만 간단히'sb.AppendFormat ("{0 : X2}", HashArray [i]);' – elgonzo