Funderar på om ComputeHash invändigt använder sig av den kod som Kod 1 innehåller, CryptoStream alltså, så att det är lika bra att använda kod 2. Någon som vet? Eller har rekommendationer rent allmänt.
//Kod 1
public string Hash(byte[] input)
{
HashAlgorithm ha = SHA384.Create();
using(CryptoStream cs = new CryptoStream(Stream.Null, ha, CryptoStreamMode.Write))
{
cs.Write(input, 0, input.Length);
cs.FlushFinalBlock();
}
return Convert.ToBase64String(ha.Hash));
}
//Kod 2
public string Hash(byte[] input)
{
HashAlgorithm ha = SHA384.Create();
return Convert.ToBase64String(ha.ComputeHash(input)));
}
...har du jämfört din hash med en "riktig" hash utförd av en algoritm som du vet fungerar?
Krypto-klasserna i .NET kan användas på massor av sätt och returnerar då olika värden, så det kan vara bra att jämföra med ett hash-värde man vet stämmer. Jag brukar kolla mot: http://www.securitystats.com/tools/hashcalc.php
Tänk på att hash-värden först ska plockas ut som HEX-värden innan du gör BASE64 av dem.