2012-06-28 2 views
0

У меня возникли проблемы с копированием файла, а затем после проверки целостности файла. Я пробовал каждый способ копирования файлов, о котором я могу думать (File.Copy, filestreams, пытается сделать двоичную копию), но хэш файла всегда отличается после копии. Я искал вокруг, и я замечаю, что многие люди говорят, что копирование файла из сетевого ресурса может привести к этому, но я получаю те же результаты от акций, что и прямо с моего жесткого диска.копия файла, которая не изменит хэш файла

//File hashing method: 
private byte[] hashFile(string file) 
{ 
    try 
    { 
     byte[] sourceFile = ASCIIEncoding.ASCII.GetBytes(file); 
     byte[] hash = new MD5CryptoServiceProvider().ComputeHash(sourceFile); 
     return hash; 
... 

Используя этот метод в оригинальный файл и скопированный файл всегда дает один и тот же хэш (индивидуально) через каждый перспективу, но два хэш не совпадают. Кто-нибудь знает способ копирования файлов без изменения хэша файла?

+1

Вы проверили Каковы различия в ByteArray,? Малый/Большой Endian вопросы? –

+5

Кажется, вы хешируете имя файла, а не содержимое файла. – Sjoerd

+4

Почему файл является строкой? – harold

ответ

3

Я думаю, вы Hashing Имя файла .. и не содержание!

так уверен, что он не вычислит как же!

проверить значение и длина файла и байт [] ИСХ

+0

хороший звонок ... это обязательно объясняет проблему! * facepalm * – DarkShadow

3

Кажется, вы передаете имя файла вместо содержимого файла хэш-функции.

использовать что-то вроде этого:

byte[] hash = md5.ComputeHash(File.ReadAllBytes(filename)); 

Или это:

using (var stream = File.Open(filename)) { 
    byte[] hash = md5.ComputeHash(stream); 
} 
+0

ty для ответа какой из них лучше? – MonsterMMORPG

Смежные вопросы