.NET-код, который я пытаюсь преобразовать в PHP:
Dim hmac As New HMACMD5(secretPassword)
Dim computedHash As Byte() = hmac.ComputeHash(stringToHash)
В настоящее время в php я использую:
$computedHash = hash_hmac('md5', $stringToHash, $secretPassword);
Из того, что я понимаю, функция php hash_hmac() является правильной функцией для использования, так как именно она указывает, как использовать md5, однако при тестировании оба случая дают разные результаты хеширования.Я понимаю, что .net-код возвращает массив, однако значения массива полностью отличаются от результатов php.
В .net-коде есть кодировка ascii для параметров, но я уже убедился, что мой php-код производитодни и те же результаты кодирования, только хеширование дает разные результаты.Я также проверил результаты кодирования относительно начальных нулей в двухзначных числах ("021" против "21"), да, они производят разные кодировки, но это не решило проблему хеширования, когда я попробовал оба.
Пример vb.значения переменных net:
.NET ascii encoded secretPassword "pass123" = [112, 97, 115, 115, 49, 50, 51]
.NET ascii encoded stringToHash "hashstring" = [104, 97, 115, 104, 115, 116, 114, 105, 110, 103]
.NET hash results = [43, 65, 108, 137, 120, 163, 203, 231, 219, 197, 238, 187, 209, 216, 213, 225]
Результаты хэширования Php (я уже подтвердил, что моя кодировка в php выдает то же самое, что и .net):
a2c9f74f2597038a39b28538d7f1d73a