Если вы хотите передавать данные по небезопасной сети, вам нужно больше, чем просто шифр, вам нужен безопасный протокол , который может включать распространение ключей и аутентификацию.
Если вы действительно серьезно относитесь к реализации криптографии, а не просто делаете это, чтобы понять основную математику криптографии, тогда вам нужно сделать больше, чем правильно реализовать преобразование числа. Вам также нужно беспокоиться о побочных атаках. Например, если ваша реализация занимает различное количество времени в зависимости от ключа, как это обычно бывает, то злоумышленник может вывести информацию о ключе из вашего различного времени ответа. И это только основной алгоритм, не говоря уже о том, чтобы собрать все это вместе.
В общем, это нерешенная проблема и область текущих исследований. Большинство или все реализации имеют недостатки, хотя для последних версий хорошо используемых библиотек, вероятно, не так, как кто-либо публично объявил, что они могут использовать. Атаки на основе синхронизации на OpenSSL были продемонстрированы в прошлом, хотя только в сильно предсказуемой локальной сети AFAIK. Вы можете тратить на это столько времени, сколько захотите, вплоть до всей вашей карьеры.
На практике просто используйте SSL, в любой реализации, которая поставляется с вашей платформой.