У меня возникла интересная проблема. Кажется, что 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));
}
}
Я также попытался сделать вызов нестационарным (на самом деле он начал нестатический, и у меня есть двойной и тройной, а quadrudruple проверил мой входной массив.. его абсолютно то же самое при каждом вызове.. Я даже сделал что-то в последнем окне, например:
Convert.ToBase64String(HashAlgorithm.Create("HMACSHA256").ComputeHash(bAll)
И запуск этого дважды в окне immidiates через точку останова в методе возвращает два разных хэша.
Я знаю, что Хэш должен быть детерминированным.. Так что же дает? что-то происходит с запуском в отладчике? Или любые другие идеи? на самом деле это всего лишь два странных слова: -P..
Спасибо Джош