Я столкнулся с интересной проблемой .. Кажется, что ComputeHash () для хэша "HMACSHA256" не ведет себя детерминистически ... если я создаю два экземпляра HashAlgorithm, используя HashAlgorithm.Create ("HMACSHA256") .. И запустить ComputeHash, я получаю два разных результата .. ниже приведен пример статического класса, который демонстрирует это поведение.
internal static string HashPassword(byte[] bAll)
{
using (HashAlgorithm s = HashAlgorithm.Create("HMACSHA256"))
{
return Convert.ToBase64String(s.ComputeHash(bAll));
}
}
Я также пытался сделать вызов не статичным (на самом деле он начинался нестатично, и я дважды, трижды и в четыре раза проверил мой входной массив ... он абсолютно одинаков при каждом вызове .. Я даже делал вещи в непосредственном окне вроде:
Convert.ToBase64String(HashAlgorithm.Create("HMACSHA256").ComputeHash(bAll)
И выполнение этого дважды в окне imidiates через точку останова в методе возвращает два разных хеша.
Я знаю, что Хэш должен быть детерминированным .. Так что же дает? что-то происходит с запуском в отладчике? Или есть другие идеи? на самом деле это просто два странных слова прямо сейчас :-P ..
Спасибо
Josh