#powershell #encryption #.net-framework-version
#powershell #шифрование #.net-framework-version
Вопрос:
У меня есть сценарий Powershell, в котором я использую модуль System.Security.Cryptography.RijndaelManagedTransform
. Раньше я выполнял свой скрипт с Powershell 5.1, и все работало нормально. Мне нужны некоторые функции из Powershell 7, и поэтому я сейчас выполняю скрипт с Powershell 7. Однако в моем скрипте я получаю сообщение об ошибке.
Ошибка указывает на следующую строку в New-StringDecryption:
[System.Security.Cryptography.RijndaelManagedTransform]$objectDecryptor = $encryptionObject.CreateDecryptor()
Ошибка гласит:
Не удается найти тип [System.Безопасность.Криптография.RijndaelManagedTransform]
Мне кажется, что Powershell не может найти модуль. Однако почему это сработало при запуске скрипта с Powershell 5.1?
Я уже пытался добавить эти строки в скрипт, но это не помогло:
Add-Type -AssemblyName System.Security
Add-Type -AssemblyName System.Core
Комментарии:
1. Некоторые API-интерфейсы шифрования были слегка переработаны во время переноса на .NET Core, и
RijndaelManagedTransform
тип больше не существует.RijndaelManaged.CreateDecryptor()
по-прежнему возвращает anICryptoTransform
, вы пробовали просто удалить приведение? Если это не помогло, пожалуйста, опубликуйте полный пример кода вместе с любыми другими ошибками, с которыми вы можете столкнуться2. Спасибо, удаление приведения типов сделало свое дело!