Zonor
@Zonor
Начинающий веб программист

Как расшифровать C# rijndael-256 в PHP?

Дано:
Есть некая программа, которая отправляет данные по 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
  • Вопрос задан
  • 145 просмотров
Пригласить эксперта
Ответы на вопрос 1
Adler_lug
@Adler_lug
Если программа на C# и не обфусцирована, то с большой вероятность её можно поправить не имея исходников. Все упирается в сложность программы и умения "реверсера". С этим нужно обращаться сюда.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы