2016-08-08 8 views
0

Я пытаюсь преобразовать веб-сайт VS2010 в веб-приложение VS2015 (C#). Последняя проблема, с которой я столкнулся, заключается в том, что VS2015 требует SHA1 или HMACSHA256,384,512. Это старый сайт, и он использовался для 3DES. Он использует членство .NET 2.0 с зашифрованными паролями. Я прочитал что-то, что говорит, что .NET Membership использует шифрование машинного ключа при шифровании паролей. Я знаю, что мне нужно переключиться на Hashed Passwords, и это находится в списке элементов.Пароли, не работающие после изменения машинного ключа для обновления VS2015

When using <machineKey compatibilityMode="Framework45" /> or the MachineKey.Protect and 
MachineKey.Unprotect APIs, the 'validation' attribute must be one of these values: 
SHA1, HMACSHA256, HMACSHA384, HMACSHA512, or alg:[KeyedHashAlgorithm] 

Проблема в том, что я не могу войти в систему после того, как это изменилось. Я предполагаю, что это потому, что проверка использует другой алгоритм, и поэтому совпадения не найдено.

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

ответ

1

Хорошо. Оказывается, есть режим совместимости, который, похоже, работает и позволяет мне не изменять шифрование. Все, что вам нужно сделать, это добавить compatibilityMode = «Framework20SP2» в MachineKey в web.config следующим образом:

<machineKey compatibilityMode="Framework20SP2" validationKey="..." 
    decryptionKey="..." validation="3DES" /> 

Надеется, что это помогает кому-либо еще, кто работает в этом.