Существует множество вариантов оценки стойкости алгоритмов. Но я не буду здесь приводить сложные математические формулы, а ограничусь некоторыми общими соображениями.
Прежде всего необходимо, чтобы зашифрованный текст был совершенно не похож на исходный — структурой, количеством символов и другими признаками. Думаю, это требование вполне понятно — если гипотетический злоумышленник вдруг узнает, сколько слов в письме, их длину и распределение по частям речи, то это сильно облегчит расшифровку.
Для надежного шифрования необходимо, чтобы при минимальном изменении изначального текста или пароля финальный текст менялся практически до неузнаваемости. Чтобы понять, зачем это нужно, — приведу пример. Если кто-то рассылает несколько сообщений с минимально измененным текстом (например, вслед пакету документов летит подправленный вариант), то на основании знания исходного текста или его измененной части можно «размотать» весь текст и даже пароль.
Последнее требование — псевдохаотичность выходной информации. Шифровка должна быть сложной, чтобы в ней невозможно было выявить какие-то закономерности. Любой текст обладает достаточно ярко выраженной структурой, повторяющимися словами, и.т.п. Кстати, псевдохаотичность шифра просто проверить — достаточно попробовать заархивировать результирующий документ. Если от сжатия размер уменьшится, значит алгоритм генерирует избыточную информацию, в которой есть закономерности.