Почему длина зашифрованного текста, сгенерированного php с помощью mcrypt_encrypt (), отличается от длины, сгенерированной C с помощью библиотеки шифрования openssl

Я старался этот код из openssl wiki, которые генерируют зашифрованный текст по алгоритму aes-256.
Длина вводимого простого текста составляет 512 байт. Длина вывода, однако, является разницей. PHP генерирует вывод длиной 512 байт, в то время как C генерирует зашифрованный текст длиной 528 байт.

почему существует такая разница и как я могу использовать алгоритм aes-256 для шифрования текста в PHP, а затем расшифровать его в C?

0

Решение

Вы должны посмотреть, например, раздел комментариев mcrypt_encrypt чтобы дополнить текстовое сообщение, используя метод заполнения PKCS # 7. PHP использует заполнение нулями до первого значения, которое находится на границе блока, вместо специального метода заполнения PKCS # 7, который обычно используется.

Проблема с заполнением нулями заключается в том, что оно не является детерминированным для сообщений, которые могут заканчиваться 00 значение байта, поскольку оно может быть удалено во время распаковки.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]