Я старался этот код из openssl wiki, которые генерируют зашифрованный текст по алгоритму aes-256.
Длина вводимого простого текста составляет 512 байт. Длина вывода, однако, является разницей. PHP генерирует вывод длиной 512 байт, в то время как C генерирует зашифрованный текст длиной 528 байт.
почему существует такая разница и как я могу использовать алгоритм aes-256 для шифрования текста в PHP, а затем расшифровать его в C?
Вы должны посмотреть, например, раздел комментариев mcrypt_encrypt
чтобы дополнить текстовое сообщение, используя метод заполнения PKCS # 7. PHP использует заполнение нулями до первого значения, которое находится на границе блока, вместо специального метода заполнения PKCS # 7, который обычно используется.
Проблема с заполнением нулями заключается в том, что оно не является детерминированным для сообщений, которые могут заканчиваться 00
значение байта, поскольку оно может быть удалено во время распаковки.
Других решений пока нет …