alsoijw, я же расписал основные принципы подхода. Если менять только буквы на буквы, то структура текста (пробелы и знаки препинания) все одно сохранятся, что значительно облегчает анализ. Вполне допускаю что если подмена будет по некоторой последовательности, то задача (взлом шифра) все же будет решаема, хотя наверняка это будет сложнее взломать.
Собственно сохранять структуру - в любом случае - очень неправильно. Именно для этого в таких алгоритмах как DES, AES и им подобным (блочные шифры) всегда есть модули перестановок байт. Т.е. структура и последовательность входного текста принудительно разрушается. В поточных же шифрах шифруется поток без перетасовки последовательности. Но там работает та самая XOR-изация с бесконечной последовательностью псевдослучайных байт. Собственно получение этой последовательности может быть реализовано и блочным шифром на вход которому будет подаваться некий шаблон + счетчик кадров. Ключ используемый для формирования крипто-блока (который потом разворачивается в XOR-ключ кодирования потока). Но когда ты XOR-ишь с практически случайной последовательностью - то там одинаковый символ кодируется (XOR-ом) всегда разным байтом. И есть даже доказанная теорема что такое кодирование вполне криптостойкое. Но как я уже рассказывал и даже такое, надежное в теории кодирование может быть взломано элементарно если не придерживаться правила - "каждому пакету - свой ключ шифрования, и никогда один ключ не должен использоваться повторно".
Я приношу свои извинения за жуткий офффтоп, но полагаю поднятый ТС вопрос о шифре стоит некоторого углубления в тему. Оно просто необходимо, что бы вы сами пришли к правильному выводу: криптография - это не так то просто. И прежде чем изобретать свой велосипед шифр нужно очень тщательно разобраться в вопросах кодирования, а лучше воспользоваться готовыми алгоритмами (благо библиотеки то есть в любом языке).