Come posso riprodurre un hash SHA512 in C # adatto a PHP SHA512?
Domanda
La domanda è praticamente autoesplicativa. Ho cercato su Google molti siti, molti metodi, ho provato molte codifiche, ma non riesco a farle corrispondere.
Sto provando a creare la stringa " asdasd " incontro. ( http://www.fileformat.info/tool/hash.htm?text= asdasd )
Soluzione
Prova questo
using System.Security.Cryptography
public static string HashPassword(string unhashedPassword)
{
return BitConverter.ToString(new SHA512CryptoServiceProvider().ComputeHash(Encoding.Default.GetBytes(unhashedPassword))).Replace("-", String.Empty).ToUpper();
}
Altri suggerimenti
BitConverter funziona bene ...
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();
(risolto per hash a 512 bit, scusa :)
Ho appena trascorso diverse ore cercando di ottenere una funzione hash .NET per abbinare la funzione Crypt di PHP. Non è divertente.
Ci sono molte sfide qui, poiché l'implementazione PHP di Crypt restituisce una stringa codificata in base64 e non esegue più iterazioni di hashing (ad esempio 5000 è predefinito per Crypt.) Non sono stato in grado di ottenere output simili da .NET usando diverse librerie, fino a quando non ho trovato CryptSharp. Accetta un sale simile alla funzione di PHP (o alla C originale) (ad es. " $ 6 $ round = 5000 $ mysalt "
). Nota che non ci sono $ finali e che se non fornisci un sale ne genererà uno casuale.
Puoi trovare CryptSharp qui: http://www.zer7.com/software.php?page=cryptsharp
Buona lettura di base: - http://www.akkadia.org/drepper/SHA-crypt.txt