Этот проект представляет собой простой интерфейс REST через HTTPS. Я пытаюсь хэш передаваемых данных, поэтому я могу убедиться, что он не был изменен во время транспортировки (с использованием соли, конечно). Однако, похоже, что-то не так с моим кодом. Сервер REST - это PHP, а клиент - C#.Как создать хэш, который можно прочитать на PHP и C#?
PHP
public function hash($text)
{
$text = utf8_encode($text);
$encrypted = hash("sha512", $text);
return base64_encode($encrypted);
}
C#
public static string Hash(string Plaintext)
{
byte[] HashValue, MessageBytes = Encoding.UTF8.GetBytes(Plaintext);
SHA512Managed SHhash = new SHA512Managed();
HashValue = SHhash.ComputeHash(MessageBytes);
return Convert.ToBase64String(HashValue);
}
Они не производят тот же хэш. Что я делаю не так?
Вы пробовали пошаговый 3 шаг и сравнение выходных? – AbraCadaver
Возможно, ваши исходные данные уже разные. C# и PHP используют разные типы для ваших входных данных. Вы уверены, что фактическое двоичное содержимое обоих точно такое же, прежде чем вы их используете? – ToBe
убедитесь, что кодировка utf8 абсолютно идентична перед хешированием. sha512 - sha512, поэтому, если у вас разные хэши, у вас разные входы. –