Итак, вот моя проблема: в старой системе ASP. NET 4.5 мы широко использовали MembershipProvider EncrypytPassword и DecrypytPassword . Не для настоящих паролей, они хешируются. Очевидно, он использует DecryptionKey в разделе Machinekey моего файла web.config. Работает нормально. Зашифрованная информация хранится в БД и может быть расшифрована без проблем.
Теперь нам нужно прочитать их из БД и расшифровать в приложении . NET core . Очевидно, у меня нет доступа к ASP. NET MembershipProvider для расшифровки. Поэтому я подумал, что это должно быть очень просто: у меня есть ключ дешифрования (шестнадцатеричная строка, хранящаяся в нашем web.config), я знаю, что алгоритм - AES (опять же, из раздела машинных ключей), и я смогу расшифровать их сам.
Но что бы я ни делал, не работает. Я играл с заполнением, IV, режимом шифрования, размером ключа. Ничего не работает.
Я даже декомпилировал System.Web.dll и прочитал код для EncryptOrDecryptData метода, который за это отвечает. Кажется, невозможно понять, что происходит.
Как вы думаете, я могу воспроизвести их метод дешифрования? Зная, что единственное, что было упомянуто в web.config, было следующее:
machineKey decryption="AES" decryptionKey="D8E7396EEA4.........." (48 hex characters).
FYI, я могу использовать только это в любом консольном приложении. NET для расшифровки данных, потому что я могу добавить ссылку в System.Web.dll и используйте метод DecryptPassword . Это означает, что я смогу достичь этого и в. NET Core, просто имея ключ дешифрования. Но как?