В настоящее время я использую phpbb 3.0.8. У него 3000 пользователей и около 60 000 сообщений. Я меняю форум на другой, написанный на классическом ASP (я знаю, что люди не одобрят это, но у меня есть веские причины).
Мой сайт написан на ASP.net. Классический ASP forum имеет API для подключения к нему. Я все это настроил, и он работает нормально. Я написал свою собственную форму входа.
Я хочу скопировать все учетные записи пользователей. На текущем форуме есть таблица:
Username | Password | Hash | Salt
Я отказался от классической техники хеширования ASP, чтобы теперь использовать хэш ASP.net Security.SHA1
. Пароль хранится как SHA1 (rawpassword + salt)
.
] Мой план состоит в том, чтобы хранить новые поля рядом с текущими:
UserID | Password | Hash | Salt | PHPBBHash
Когда пользователь входит в систему, если установлено хеш-поле PHPBB, он хеширует пароль с хешем PHPBB. Затем, если вход успешен, он удаляет PHPBBHash поле d и создает текущие системные хеш-значения. Таким образом, происходит плавный переход от PHPBB к новому форуму, и никто не теряет свои учетные записи.
Моя проблема в том, что, учитывая хеш PHPBB, имя пользователя и пароль, в ASP.net c # как я могу проверить хеш PHPBB? Как он его вычисляет?
Меня также беспокоит то, что классическая хеш-функция ASP претендует на роль SHA1, но дает результаты, отличные от Securiy.SHA1
.
Я назначил награду за это, если кто-нибудь может дать мне окончательное решение, я ценю ответ со ссылкой на ресурсы, но я все еще изо всех сил пытаюсь его понять.
Необработанный пароль:
blingblangblaow222
В базе данных PHPBB3:
username: Tom
username_clean: tom
user_password: $H$9ojo08A3LuhnkXR27p.WK7dJmOdazh0
user_passchg: 1301433947
user_form_salt: 637f480dfdab84ef
Используя пример кода из ответа Vishalgiris, мы делаем следующее:
phpBB.phpBBCryptoServiceProvider cPhpBB = new phpBB.phpBBCryptoServiceProvider();
string remoteHash = "$H$9ojo08A3LuhnkXR27p.WK7dJmOdazh0";
bool result = cPhpBB.phpbbCheckHash("blingblangblaow222", remoteHash);
Response.Write("<BR><BR><BR>" + result);
Это фактически возвращает истину. Супер! Но кто-нибудь знает, почему это работает? Я сбит с толку, похоже, он вообще не учитывает соль.