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