Не видя ваш код, мы можем только догадываться. Но мое первое предположение состоит в том, что ваша процедура шифрования или дешифрования использует символ \ 0 или два в двоичном файле. Данные должны обрабатываться как байты, а не как символьные строки. (То же, что и проблема StrLen (), упомянутая в другом месте на этой странице.)
Я не программист на C (!), Но мне удалось заставить подпрограммы шифрования работать в Delphi / Pascal, загрузив исходный код OpenSSL (в C) и пройдя по коду для приложение openssl.exe. Использование функций EVP_ * стало намного проще, когда вы сами поймете, как они это делают.