Wie kann ich einen SHA512 Hash in C # zu reproduzieren, die die PHP SHA512 passt?
Frage
Die Frage ist ziemlich selbsterklärend. Ich googeln viele Seiten, viele Methoden, viele Kodierungen versucht, aber ich kann sie nicht übereinstimmen.
Ich versuche, die Zeichenfolge „asdasd“ Spiel zu machen. ( http://www.fileformat.info/tool/hash.htm?text= asdasd )
Lösung
Versuchen Sie, diese
using System.Security.Cryptography
public static string HashPassword(string unhashedPassword)
{
return BitConverter.ToString(new SHA512CryptoServiceProvider().ComputeHash(Encoding.Default.GetBytes(unhashedPassword))).Replace("-", String.Empty).ToUpper();
}
Andere Tipps
BitConverter funktioniert gut ...
var testVal = "asdasd";
var enc = new ASCIIEncoding();
var bytes = enc.GetBytes( testVal );
var sha = new SHA512Managed();
var result = sha.ComputeHash( bytes );
var resStr = BitConverter.ToString( result );
var nodash = resStr.Replace( "-", "" );
nodash.Dump();
(Fixed für 512-Bit-Hash, leider:)
Ich verbrachte mehrere Stunden versucht, eine .NET-Hash-Funktion zu erhalten PHP-Crypt-Funktion entsprechen. Kein Spaß.
Es gibt mehrere Herausforderungen hier, da die PHP Implementierung von Crypt einen Base64-codierten Zeichenfolge zurückzugibt, und nicht mehr Hash-Iterationen macht (zB 5000 ist standardmäßig für Crypt.) Ich nicht in der Lage war ähnlich Ausgaben von .NET zu erhalten mit mehrere Bibliotheken, bis ich gefunden CryptSharp. Er nimmt ein Salz ähnlich wie PHP (oder die ursprünglichen C) Funktion (z.B. "$6$round=5000$mysalt"
). Beachten Sie, dass es kein Hinter $ ist, und dass, wenn Sie es einen gelegentlichen kein Salz liefern automatisch generieren.
Hier finden Sie CryptSharp hier: http://www.zer7.com/software.php?page=cryptsharp
Gute Hintergrund Lesung: - http://www.akkadia.org/drepper/SHA-crypt.txt