Ранее мы использовали C # .net 2.0 для создания веб-приложения.
Пароль пользователя был хеширован и сохранен в базе данных с использованием следующего кода.
private const string encryptionKey = "AE09F72B007CAAB5";
HMACSHA1 hash = new HMACSHA1();
hash.Key = HexToByte(encryptionKey);
encodedPassword = Convert.ToBase64String(
hash.ComputeHash(Encoding.Unicode.GetBytes(password)));
Теперь мы намерены перейти на php.
Поэтому мы сталкиваемся с проблемой для пользователей, когда они хотят вернуться.
Какой PHP-эквивалент метода следует использовать, чтобы хеш-значения в базе данных работали?
Например, пароль для кодирования - pa55w0rd, полученное значение хеш-функции - oK9NOVhpTkxLoLfvh1430SFb5gw =
Спасибо.
3 ответа
В C # хеш-код по умолчанию имеет форматирование в HEX (AE09F72B007CAAB5 - шестнадцатеричное число) .PHP по умолчанию использует форматирование Base64. Решение вашей проблемы заключается в преобразовании строки base64 в шестнадцатеричную в php
Попробуйте что-нибудь вроде:
<?php
$key = "AE09F72B007CAAB5";
echo base64_encode(hash_hmac("sha1", "test", $key, true));
?>
Используя версию PHP .Net (Phalanger) или используя веб-сервис .Net для кодирования / decode не вариант?
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.