2017-01-04 3 views
1

Я пытаюсь зашифровать/расшифровать с использованием дополнений AES, CBC и PKCS # 7 с использованием интерфейса EVP. Я использую example found on the Wiki.OpenSSL EVP_CIPHER_CTX_set_padding не работает

Я делаю EVP_CIPHER_CTX_set_padding(ctx, 0) после создания и инициализации контекста, который не должен добавлять заполнение и сбой, если открытый текст не кратен 16 байтам. Несмотря на это, зашифрованный текст всегда содержит дополнительный блок, состоящий только из заполнения.

код я использую буквально скопировать из учебника, я только добавление EVP_CIPHER_CTX_set_padding(ctx, 0) в обоих зашифровать и расшифровать так:

/* Create and initialise the context */ 
if (!(ctx = EVP_CIPHER_CTX_new())) handleErrors(); 
EVP_CIPHER_CTX_set_padding(ctx, 0); 

Я делаю что-то не так?

+1

Я отформатировал ваш вопрос для вас, вы можете взглянуть на изменения, нажав [отредактированный

ответ

5

По-видимому, как EVP_DecryptInit_ex, так и EVP_EncryptInit_ex повторно инициализировать контекст, чтобы любые изменения контекста (например, установка отступов) выполнялись после того, как эти методы были вызваны.

+1

На самом деле, глядя на manpages, он это говорит, но в нем явно не говорится о режиме заполнения и т. Д. Таким образом, это составляет довольно приятный Q/A. Спасибо за отчетность. –

+1

Прошел час, отлаживая такое же поведение, пока я не найду ответ. Большое спасибо! –

Смежные вопросы