Различные MD5 хэши в PHP и C #

Почему хэши становятся другими, если я меняю строку ввода?

Мой код C #:

public static string CreateMD5(string strInput)
{
using (MD5 md5 = MD5.Create())
{
byte[] inputBytes = Encoding.UTF8.GetBytes(strInput);
byte[] hashBytes = md5.ComputeHash(inputBytes);

string hashedString = BitConverter.ToString(hashBytes).Replace("-", "").ToLower();
return hashedString;
}
}

В PHP я использую md5() функция. Это онлайн-сервис, поэтому у меня нет исходного кода; Я просто использую этот сайт для сопоставления результатов.

Если у меня есть эта строка:

test-server::7250406f7c43524545f794ff50dfd15b

Хеши одинаковы: 20202421c846813960404af7dd36c146, Но если я добавлю строку к этому (с закодированными символами):

test-server::7250406f7c43524545f794ff50dfd15b::name=%D0%98%D0%BD%D0%B5%D1%81%D1%81%D0%B0

Теперь хэши разные: 3db825e09eae0a83db535fda7f5ee5b5 а также ee1ae334e4bdeceb54caab15555f2f40,

Почему это происходит?

0

Решение

Хеш-значение ee1ae334e4bdeceb54caab15555f2f40 хэш MD5 закончился test-server::7250406f7c43524545f794ff50dfd15b::name=Инесса, Этот вход является URL-декодированной версией test-server::7250406f7c43524545f794ff50dfd15b::name=%D0%98%D0%BD%D0%B5%D1%81%D1%81%D0%B0,

Ваш фрагмент кода C # выполняет MD5 для не декодированной версии. PHP декодирует GETПо умолчанию, чтобы получить тот же результат, вам нужно будет дважды кодировать значение, установленное для скрипта PHP.

Посмотреть здесь, https://3v4l.org/rK7fi (онлайн-реализация PHP-кода):

Переменные GET передаются через urldecode ().

http://php.net/manual/en/reserved.variables.get.php

В качестве альтернативы, если вы MD5 перед тем, как URL кодировать значения в C #, системы должны возвращать тот же хеш.

4

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector