Я пытаюсь перенести пользователей из базы данных Joomla на пользовательский, используя таблицы asp.net по умолчанию и поставщиков. Теоретически я могу изменить хэш-тип от значения по умолчанию (SHA) до MD5, изменив web.config, однако при регистрации в нем сообщается неверный пароль (или имя пользователя, но я сомневаюсь, что это так). Изучая таблицу aspnet_Membership и таблицу Joomla_users, я вижу, что оба пользователя имеют одинаковые значения для пароля и солей для каждого пользователя (Joomla 1.7 фактически сохраняет его как пароль: соль, но это легко разбить на два поля). Оба, как представляется, находятся в формате base64, и добавление пользователя через контроль по умолчанию в ASP управляет результатами аналогичной пары полей для нового пользователя (хотя соль рандомизирована, я думаю, поэтому я не могу сравнивать с тем же самым известным паролем).Изменение SqlMembershipProvider для использования паролей MD5, Joomla
Вот выдержка из моего web.config:
<system.web>
<machineKey validation="MD5"/>
...
<membership hashAlgorithmType="MD5">
<providers>
<clear />
<add name="AspNetSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="UserAuth"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
passwordFormat="Hashed"
applicationName="/" />
</providers>
</membership>
</system.web>
Одна вещь, я не уверен, что на это, является ли это md5, md5 или MD5 (я видел, как последний в образцах кода, а погуглить). Тем не менее, я могу написать вздор вместо этого, и приложение не похоже на веки.
Я не особо хочу писать пользовательский поставщик членства, если нет другого пути.
Вот некоторые PHP, который сравнивает Joomla хэшируются пароль с переданным в качестве параметра для этой функции:
$user_id = mysql_result($result, 0, 'id');
$db_password = mysql_result($result, 0, 'password');
$joomla = &New JConfig;
list($md5pass, $saltpass) = split(":", $db_password);
$md5_password = md5($user_password.$saltpass);
if (strcmp($md5_password, $suppliedpass) == 0)
{
return $user_id;
}
Либо версия ASP игнорирует мою просьбу md5, или каким-то образом это хранить его каким-то другим способом, или я не говорю, что правильно использовать md5 или ...? Я не хочу, чтобы 4000 пользователей перезагрузили свои пароли, хотя я знаю, что md5 не рекомендуется в эти дни.