Gdybym hash ciąg „hasło” w języku C# za pomocą SHA256 pomocą poniższego sposobu uzyskać to jako mój wyjścia:SHA256 hash String w C# nie zgadza się z hash na stronie
e201065d0554652615c320c00a1d5bc8edca469d72c2790e24152d0c1e2b6189
Ale this website(SHA-256 produces a 256-bit (32-byte) hash value) mówi mi, ma to:
5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
Mam wyraźnie problem z formatem danych lub coś podobnego. Jakieś pomysły, dlaczego ta metoda C# SHA256Managed zwraca coś innego? Wysyłam metodę "password" jako parametr wejściowy.
private static string CalculateSHA256Hash(string text)
{
UnicodeEncoding UE = new UnicodeEncoding();
byte[] hashValue;
byte[] message = UE.GetBytes(text);
SHA256Managed hashString = new SHA256Managed();
string hex = "";
hashValue = hashString.ComputeHash(message);
foreach (byte x in hashValue)
{
hex += String.Format("{0:x2}", x);
}
return hex;
}
Nie używaj skrótów SHA256 do przechowywania haseł (zakładając, że projektujesz to od zera). Zapoznaj się z nowoczesnymi metodami przechowywania haseł, powinieneś użyć czegoś takiego: https://msdn.microsoft.com/en-us/library/system.security.cryptography.rfc2898derivebytes(v=vs.110).aspx lub inna metoda wielokrotnej iteracji. – willaien
Dzięki za link. Używamy SHA256, backend jest solenie unikalny dla użytkownika, a my nie jesteśmy podwójnym hashing. Wygląda na to, że możemy ulepszyć korzystanie z PBKDF2 zamiast SHA256. – LampShade