7
votes

Comment puis-je reproduire un hachage SHA512 en C # qui correspond au php SHA512?

La question est à peu près auto-explicite. J'ai googlé de nombreux sites, de nombreuses méthodes, j'ai essayé de nombreux codages, mais je ne peux pas l'obtenir pour correspondre.

J'essaie de faire correspondre la chaîne "Asdasd". ( http://www.fileformat.info/tool/hash.htm?text= Asdasd )


3 commentaires

PHP n'a pas de mise en œuvre SHA-512 autant que je sache. Pourriez-vous publier le code que vous utilisez?


J'avais tort. PHP semble prendre en charge assez de quelques fonctions de hachage: php.net/hash


Mais je voudrais toujours voir le code que vous utilisez pour répondre à cette question. (désolé pour le spamming les commentaires :-d)


3 Réponses :


16
votes

Essayez ceci xxx


4 commentaires

Facile, sympa, petit, rapide, disons parfaitement!


SHA612CRYPTOSERVICEPOVIDER n'est-il pas un objet jetable? Est-ce que cela fuit une instance de fournisseur de services sur chaque appel?


Il y a un SHA612 maintenant? aurait pu juger c'était 512 ... ^ _ ^


Fonctionne bien, mais notez que je devais appeler tolower () au lieu de Toupper () à la fin pour obtenir des résultats identiques avec le hachage de PHP ("SHA512", $ données).



1
votes

BitConverter fonctionne bien ...

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();


1 commentaires

Je ne sais pas si c'est juste une faute de frappe dans votre code, mais il demandait que Sha512, pas SHA256.



1
votes

Je viens de passer plusieurs heures à essayer d'obtenir une fonction de hasch .NET pour correspondre à la fonction CRYPT de PHP. Pas drôle.

Il y a plusieurs défis ici, car la mise en œuvre PHP de Crypt renvoie une chaîne codée de base64 et ne fait pas de multiples itérations de hachage (par exemple 5000 est par défaut pour la crypte.) Je n'ai pas pu obtenir des sorties similaires à partir de .net Plusieurs bibliothèques, jusqu'à ce que je trouve cryptshaarp. Il accepte un sel similaire à celui de PHP (ou de la fonction C) (E.G. "$ 6 $ rond = 5000 $ mysalt" ). Notez qu'il n'y a pas de fuite $, et si vous ne fournissez pas de sel, il sera aléatoire un.

Vous pouvez trouver CryptShaRP ici: http://www.zer7.com/software.php?page=CryptShaRP

Bon de fond lecture: - http://www.akkadia.org/drepper/sha-crypt.txt


0 commentaires