Ранее мы использовали 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 =

Спасибо.

2
Kim Stacks 19 Июн 2009 в 13:43

3 ответа

В C # хеш-код по умолчанию имеет форматирование в HEX (AE09F72B007CAAB5 - шестнадцатеричное число) .PHP по умолчанию использует форматирование Base64. Решение вашей проблемы заключается в преобразовании строки base64 в шестнадцатеричную в php

0
AlexDrenea 19 Июн 2009 в 10:20

Попробуйте что-нибудь вроде:

<?php
 $key = "AE09F72B007CAAB5";
 echo base64_encode(hash_hmac("sha1", "test", $key, true));
?>
0
tttt 19 Июн 2009 в 10:20

Используя версию PHP .Net (Phalanger) или используя веб-сервис .Net для кодирования / decode не вариант?

0
Mischa Kroon 19 Июн 2009 в 10:00