Я пытаюсь зашифровать строку с помощью RijndaelManaged
, чтобы отправить ее стороннему сервису.Я реализовал процедуру в более старых версиях .Net Framework (4.5, 4.6.x), как показано ниже:
RijndaelManaged rm= new RijndaelManaged();
rm.KeySize = 256;
rm.BlockSize = 256;//causes exception in dotnet core 2.1
rm.Padding = PaddingMode.PKCS7;
rm.Key = Convert.FromBase64String(this.Key);
rm.IV = Convert.FromBase64String(this.IV);
var encrypt = rm.CreateEncryptor(rm.Key, rm.IV);
В соответствии с документацией , класс RijndaelManaged
может использоваться сBlockSize = 256
.Но когда код выполняется в ядре dotenet 2.1, возникает исключение:
System.PlatformNotSupportedException: BlockSize должно быть 128 в этой реализации.at System.Security.Cryptography.RijndaelManaged.set_BlockSize (значение Int32)
ОБНОВЛЕНИЕ
Благодаря ответу @ Access-Denied, согласно , это, я заметил, что это может быть ошибкой в документации ядра dotnet, и я не могу использовать длинный BlockSize
256 с классом RijndaelManaged
.Как я уже упоминал, зашифрованные данные будут отправлены стороннему сервису.Я должен использовать Rijndael с длиной 32 IV
.Как я могу справиться с этим?