Как я могу воспроизвести хеш SHA512 в C#, который соответствует PHP SHA512?

Вы уверены, что Вам будут только когда-либо требоваться часы и минуты? Если Вы хотите сделать что-либо значимое с ним (как, например, вычисляют отрезки времени между двумя такими точками данных), не наличие информации о часовых поясах и DST может дать неправильные результаты. Часовые пояса, возможно, не применяются в Вашем случае, но DST несомненно будет.

7
задан Lazlo 13 September 2009 в 23:04
поделиться

2 ответа

Попробуйте это

using System.Security.Cryptography

public static string HashPassword(string unhashedPassword)
{
    return BitConverter.ToString(new SHA512CryptoServiceProvider().ComputeHash(Encoding.Default.GetBytes(unhashedPassword))).Replace("-", String.Empty).ToUpper();
}
17
ответ дан 6 December 2019 в 10:52
поделиться

BitConverter работает нормально ...

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

(Исправлено для 512-битного хеша, извините :)

1
ответ дан 6 December 2019 в 10:52
поделиться