İlginç bir sorunla karşılaştım .. HashAlgorithm.Create ("HMACSHA256") kullanarak HashAlgorithm'in iki örneğini oluşturursam, "HMACSHA256" karma değerinin ComputeHash() değeri deterministik olarak davranmıyor gibi görünüyor. ComputeHash, iki farklı sonuç elde ediyorum .. aşağıda bu davranışı sergileyen bir örnek statik sınıftır.ComputeHash neden deterministik olarak davranmıyor?
internal static string HashPassword(byte[] bAll)
{
using (HashAlgorithm s = HashAlgorithm.Create("HMACSHA256"))
{
return Convert.ToBase64String(s.ComputeHash(bAll));
}
}
Ben de çağrı olmayan statik hale getirmeye çalıştık (aslında olmayan statik başladım ve çift ve üç ve quadrudruple .. Ben her çağrıda onun kesinlikle aynı benim giriş dizisi .. kontrol hatta immidiate pencere gibi bir şeyler yaptık:
Convert.ToBase64String(HashAlgorithm.Create("HMACSHA256").ComputeHash(bAll)
Ve iki farklı karmaları döndüren yönteminde bir kesme noktası aracılığıyla iki kez immidiates pencerede o çalışan ..
Ben Hash deterministik olarak varsayalım biliyorum. Peki ne veriyor? Koşarak devam eden bir şey bir hata ayıklayıcıda? Ya da başka herhangi bir fikir? Gerçekten bu şu anda kelimeler için sadece iki garip :-P ..Teşekkür Josh
Bu sorunu gösteren herhangi bir kısa örnek verisi var mı? Aramalar arasında veya aralarında 'bAll' değişiyor mu? –
HMAC anahtarlı bir hash.Örnek kodunda anahtarı göremiyorum. Birini açıkça belirtmezseniz anahtarın rastgele ayarlandığına inanıyorum. – dtb
aramalar arasında hiçbir şey değişmez .. Gibi ben de bu imkansızlar penceresinden yaptım dedim .. İşte benim Immidiates penceresinden 4 çağrıları .. Evet mükemmel değil çünkü HashAlgorithm atmak gerekir, ama sonuçları aynı pencereleri veya yöntemi kullanarak aynı. (Onları bir sonraki yoruma dahil edeceğim, çünkü kopyalamak için alanım yok buraya yapıştırın) –