2013-05-14 5 views
2

У меня есть метод хэша MD5 следующий образом:MD5 хэш-разному на локальных машинах

MD5 md5 = System.Security.Cryptography.MD5.Create(); 
     StringBuilder sb = new StringBuilder(); 
     lock (md5) 
     { 
      byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input); 
      byte[] hash = md5.ComputeHash(inputBytes); 

      for (int i = 0; i < hash.Length; i++) 
      { 
       sb.Append(hash[i].ToString("X2").ToString(CultureInfo.InvariantCulture)); 
      } 
     } 
     return sb.ToString(); 

На нескольких локальных Девых машин, использующих один и тот же входной сигнал, это возвращает тот же хэш. На промежуточных и живых серверах он возвращает ожидаемое значение.

Однако на нескольких локальных машинах разработки значения различаются. И я не могу понять, почему?

Я добавил lock и CultureInfo в ответ на некоторые другие ответы здесь .. но, увы. Ничего.

Любая помощь очень ценится в этом вопросе!

UPDATE:

я добрался до места, где я сравнивал массив inputBytes на «хорошей» против «плохой» машины и массивы идентичны.

И что, если что-нибудь, может ли метод ComputeHash работать по-разному между машинами? Я чувствую, что это не основная проблема. Но в этот момент хеш возвращается к другому. Я в недоумении.

+8

вы на 100% уверены, что ваши данные совпадают? Я знаю, что это досадный вопрос, но это было бы первое, что я проверил, если бы у меня была эта проблема. –

+0

Согласен с @Bartdude. Также, возможно, большой/маленький эндиан? Разница ОС? Модификация сканера? Возьмите файл с «плохой машины» и скопируйте его обратно на одну из подходящих машин. Посмотрите, что произойдет. –

+0

Как @Bartdude, я также подозрительно отношусь к вводу. Дважды проверьте, что вход всегда имеет одинаковую кодировку и так далее на всех машинах. Независимо от того, является ли сам метод культуральным инвариантом, не имеет значения, если вход не совпадает. – Smallhacker

ответ

1

Как сказал @bartdude, на другой машине вход был другим, из-за переменной datetime, которая вытягивалась из разных системных временных форматов.

Надеюсь, это поможет кому-то в будущем.

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