2010-12-01 9 views
1

Мы конвертируем сайт ASP (используя DotNetNuke) на новый сайт PHP. Единственное, что у нас есть сейчас - это полный экспорт существующей базы данных. Одна из таблиц называется "aspnet_Membership" и содержит следующие поля:MemberhipProvider.GetPassword algorithm

  • Пароль (выглядит как base64)
  • PasswordFormat (всегда значение 2)
  • PasswordSalt (выглядит как base64)
  • PasswordQuestion (всегда пустой)
  • PasswordAnswer (всегда пустой)

Мы хотели бы, чтобы расшифровать эти пароли и хэш их, чтобы соответствовать нашим собственные рамки. Из того, что я понимаю из документации .NET, эти пароли можно расшифровать. Есть ли доступный алгоритм, который может это сделать или это сложнее? Будет ли возможно, если мы создадим сценарий ASP на текущем сервере?

Заранее спасибо

+0

Хорошо благодаря вашим ответам ojb и особенно Саймону, я смог получить содержимое Web.config, чтобы теперь у нас был файл decryptionKey и validationKey. Метод шифрования установлен в «3DES». Это кольцо звонит? Я предполагаю, что теперь можно расшифровать его с помощью PHP mcrypt, но я не могу найти правильные параметры. – dirkbonhomme 2010-12-01 17:53:02

+0

Хммм .... не знаю, можете ли вы сделать это с помощью PHP. Используя .NET, я думаю, что вы можете повторно использовать поставщика членства с помощью метода GetPassword: new SqlMembershipProvider(). GetPassword (имя пользователя, passwordAnswer); – 2010-12-01 22:24:52

ответ

3

Я думаю, что 2 означает «Encrypted», а не «Hashed» (определение here)

Зашифрованные означает, что вы можете на самом деле расшифровать его, но вам потребуется ключ машины, хранящуюся в файлах конфигурации (взять взгляд на ссылка, которую я отправил) физической машины, на которой были созданы эти пароли. Если у вас есть только копия базы данных, вы не можете этого сделать.

2

К сожалению, ваше значение 2 в PasswordFormat говорит нам, что эти пароли хэшируются, предположительно, с помощью SHA1 (вы можете проверить это в web.config). Невозможно надежно вернуть оригинальный пароль, извините.

* edit: если вы не знаете о конкретной криптографической слабости в конкретной функции хеширования, конечно.