Se hash la stringa "password" in C# utilizzando SHA256 utilizzando il metodo seguito ottengo questo come la mia uscita:SHA256 hash della stringa in C# non è d'accordo con hash sul sito
e201065d0554652615c320c00a1d5bc8edca469d72c2790e24152d0c1e2b6189
Ma this website(SHA-256 produces a 256-bit (32-byte) hash value) mi dice l'ha è:
5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
Sto chiaramente avendo un problema di formato di dati o qualcosa di simile. Qualche idea sul perché questo metodo C# SHA256Managed sta restituendo qualcosa di diverso? Sto inviando il metodo "password" come parametro di input.
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;
}
Non utilizzare gli hash SHA256 per memorizzare le password (presupponendo che si stia progettando da zero). Si prega di leggere i metodi moderni di memorizzazione delle password, si dovrebbe usare qualcosa del genere: https://msdn.microsoft.com/en-us/library/system.security.cryptography.rfc2898derivebytes(v=vs.110).aspx o qualche altro metodo di multi-iterazione. – willaien
Grazie per il link. Stiamo utilizzando SHA256, il backend sta salando in modo univoco per l'utente e non siamo un doppio hashing. Sembra che un miglioramento che possiamo fare sia utilizzare PBKDF2 invece di SHA256. – LampShade