Дано:
Есть некая программа, которая отправляет данные по API, зашифрованные rijndaelManaged с длинной блока и ключа 256.
Исходников программы нет, написана она давно и уже все потеряно, осталась только часть которая отправляет данные. Нужно расшифровать это на стороне PHP.
public static string EncryptMessage(byte[] text, string key)
{
RijndaelManaged rijndaelManaged = new RijndaelManaged();
rijndaelManaged.KeySize = 256;
rijndaelManaged.BlockSize = 256;
rijndaelManaged.Padding = PaddingMode.Zeros;
rijndaelManaged.Mode = CipherMode.CBC;
rijndaelManaged.Key = Encoding.Default.GetBytes(key);
rijndaelManaged.GenerateIV();
string str = "-[--IV-[-" + Encoding.Default.GetString(rijndaelManaged.IV);
ICryptoTransform encryptor = rijndaelManaged.CreateEncryptor(rijndaelManaged.Key, rijndaelManaged.IV);
byte[] inputBuffer = text;
return Convert.ToBase64String(Encoding.Default.GetBytes(Encoding.Default.GetString(encryptor.TransformFinalBlock(inputBuffer, 0, inputBuffer.Length)) + str));
}
Проблема в том, что в PHP - AES-256-CBC не подходит, так как это разные алгоритмы, судя по информации в интернете.
PHP версия 7,3. Так что нет mcrypt_decrypt.
Я думал написать небольшой сервис дешифратор на C#, но в текущей версии они убрали возможность управлять длинной блока, оставив ее 128.
rijndaelManaged.BlockSize = 256;
Это код теперь не работает.
Может быть кто-то сталкивался с аналогичной проблемой, есть ли какое либо решение? Может быть на другом языке есть решения, кроме PHP? Или может быть просто я не нашел решение на PHP