В принципе, вы можете использовать любой формат, который хотите, если дешифрующая часть программы знает, как его читать. Для эффективности, наличие вектора инициализации перед данными кажется хорошей идеей.
Если вы хотите зашифровать файлы, хорошей идеей было бы не создавать свой собственный формат (что приводит к необходимости принимать решения, подобные приведенному здесь), а использовать существующий формат файла (который также является криптографическим протоколом). ).
Я рекомендую формат сообщения OpenPGP, как определено в RFC 4880 (или некотором его подмножестве, если вам не нужны все функции). Это также имеет то преимущество, что ваши клиенты могут затем дешифровать ваши файлы с помощью любой реализации OpenPGP (например, pgp или gpg), если ваша программа как-то перестает работать (конечно, только если у них есть ключ / пароль).