Если есть алгоритм генерации бесконечного ключа K(n) (n - порядковый номер элемента ключа) с заданными параметрами, взломщик будет перебирать значения параметров, пытаясь применять сгенерированный ключ к шифрованному тексту. Полученное проверяется на текстовую валидность. Когда получится нормальный естественный текст - ключ взломан.
Например, пусть параметры p и q, алгоритм K(n)=p^n mod q, тогда взломщик просто устроит перебор значений (p; q) от (0; 0) до бесконечности.
Или пусть алгоритм будет K(n)=цифра числа пи "n+p", где p - параметр ключа. Тогда будем делать перебор значений p. Это будет довольно быстро, ведь нам надо будет просто последовательно генерировать цифры числа пи, помнить последние $длина_шифротекста символов и проверять их применимость как ключа.
Более того, если мы не знаем, использует ли наша жертва цифры числа пи или дискретную степенную функцию, мы можем проверять обе версии параллельно, атакуя оба варианта генерации ключа. И даже три или 10 вариантов генерации ключа.
Собственно, чтобы подобный алгоритм имел хоть какой-то смысл, надо, чтобы поиск этих самых параметров p и q был безумно сложным. Если можно проверять миллион вариантов ключа в секунду, то для криптостойкости потребуется, чтобы требовались даже не миллиарды, а как минимум триллионы секунд перебора. Ведь миллиард секунд - это жалкие 8 лет, если взять тысячу вычислителей, то 8 лет превратятся в месяц. а при 30 тыс. - в сутки.
Любой дискретный шифр с известным или предполагаемым алгоритмом ломается перебором. Даже хрестоматийный весьма стойкий RSA ломается. Защита данных дополнительно обеспечивается сменой ключа, алгоритмами Диффи-Хеллмана, реализацией PFS итд итп.
Есть ещё одно обстоятельство. Пусть у нас есть шифр простого сдвига с бесконечным неизвестным ключом, такой чёрный ящик, выдающий шифротекст. Тогда если подать на вход ящику сплошные нули, на выходе он будет выдавать ключ. Чем больше нулей подать, тем больше элементов ключа будет раскрыто. С xor такая же фигня. С нормальными шифрами это, разумеется, не прокатывает.