Ни один шифр не может быть легко реализован, особенно симметричные, и им никогда не будет. Есть много вещей, которые могут пойти не так, и большинство программистов не осознают этого. Вам нужно намного больше прочесть эту тему.
С блочными шифрами вы должны иметь дело с режимом , который вы используете, и различные режимы удовлетворяют различные потребности (но ECB - всегда неправильный выбор). Вы также должны быть очень осторожны с сохранением уникального IV для каждого сообщения. Если вы используете «пароль» в качестве ключа, то вам нужно использовать функцию string2key.
Потоковые шифры не имеют IV или режимов, и это на самом деле делает вещи более сложными . Функция потокового шифра принимает только ключ, и на выходе получается «поток PRNG», который бесконечно велик. Этот поток случайных данных затем XOR'ed с вашим сообщением. Таким образом, если вы используете тот же ключ, вы получите тот же поток PRNG. Если злоумышленник знает обычный текст 1 сообщения (или часть сообщения), он может вычеркнуть PRNG из зашифрованного текста и затем расшифровать все другие сообщения, используя этот ключ, в постоянное время O (1). Для того чтобы потоковый шифр был практически безопасным, вы никогда не сможете использовать один и тот же ключ.
Я настоятельно рекомендую вам взять копию Практической криптографии, в которой есть несколько глав, посвященных атакам симметричного шифра. Эта книга прямолинейна и не требует много математики. Если вам не нужна реализация вашей собственной программы, вы можете использовать проверенную реализацию шифрования, такую как Jasypt , которая "просто работает" очень надежным способом.