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

0

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

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

  • 0
    Убрана последняя часть вопроса, просить примеры явно не по теме здесь.
Теги:
encryption
aes

1 ответ

1

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню