Из ваших комментариев к другим ответам кажется, что вы путаете передачу файлов с шифрованием файлов. Как уже отмечали другие, вы можете использовать HTTP или FTP для передачи файлов. HTTP уже работает через SSL, который может проверять подлинность сервера, шифровать трафик и (с небольшой нагрузкой) проверять подлинность клиента.
Если вы хотите, чтобы сами файлы также были зашифрованы, лучше всего снова использовать то, что уже существует, например, PGP (или его реализация, такая как GPG). Вы также можете посмотреть на S / MIME, но PGP будет проще. Если вы заново изобрели свое собственное шифрование, вы обнаружите, что вам будет слишком много ловушек, которых вам будет трудно избежать.