конвертировать хэш в c # в php сокеты

У меня есть эта функция в C #.

public static implicit operator Guid(TCPPacketReader p)
{
byte[] tmp = new byte[16];
Array.Copy(p.Data.ToArray(), p.Position, tmp, 0, tmp.Length);
p.Position += 16;

using (MD5 md5 = MD5.Create())
tmp = md5.ComputeHash(tmp); //wtf?

return new Guid(tmp);
}

Я пытаюсь повторить эту функциональность в PHP. Проблема в том, что когда я получаю эту переменную tmp в массиве. это возвращает что-то вроде:

array[5, 49, 42, 5, 254, 160, 191, 64, 79, 37, 216, 169, 201, 181, 13, 0, 59, 187]

и я действительно не знаю, как сделать это computeHash (tmp) в php. Я пытался сделать это с помощью функции PHP md5 (), но вернуть нулевой объект. Я много гуглил, но ничего не получилось. Кто-нибудь знает, как это сделать?

-2

Решение

Первый: MD5.Create().ComputeHash(tmp); делает его немного более читабельным (в данном случае)

Что делает C #, так это принимает массив байтов. То, что делает PHP, это взять строку. Если вы хотите, чтобы входные данные для PHP были массивом байтов, вы должны сначала преобразовать его в строку

$tmp = md5(implode(array_map("chr", $tmp)));
// the implode and array_map turn tmp into a string, from an array containing the byte's ASCII codes (1-255)

C # md5.ComputeHash(tmp) возвращает массив байтов хэша

PHP md5(tmp) возвращает строку, содержащую шестнадцатеричное представление хеша

так как вы не предоставили код для PHP, я не могу ответить на вопрос. Но это должно помочь вам.

0

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

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

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