Немного о идее

Сегодня исходники по C# скачать бесплатно практически не возможно. Но мне пришла идея разместить исходники программ, что я делал в универе, здесь на сайте. Скачать можно с файлообменника, просто нужно подождать минуту - и вуааля - скачивайте и сдавайте вашему преподавателю, или эксперементируйте с исходниками... Оставляйте комментарии или давайте идеи - буду пробовать написать и выложить исходники. Также планирую в дальнейшем выложить для скачивания исходники по C++. Вообщем пожелайте мне удачи. :)

четверг, мая 20, 2010

Реализация шифра Цезаря

Вступление

Шифр Цезаря — один из древнейших шифров. При шифровании каждый символ заменяется другим, отстоящим от него в алфавите на фиксированное число позиций. Шифр Цезаря можно классифицировать как шифр подстановки, при более узкой классификации — шифр простой замены.

.


Шифр назван в честь римского императора Гая Юлия Цезаря, использовавшего его для секретной переписки. Естественным развитием шифра Цезаря стал шифр Виженера. С точки зрения современного криптоанализа, шифр Цезаря не имеет приемлемой стойкости.

Пример

Шифрование с использованием ключа k = 3. Буква С «сдвигается» на три буквы вперед и становится буквой «Ф». Твердый знак, перемещённый на три буквы вперед, становится буквой «э», и так далее:

Оригинальный текст:
Съешь же ещё этих мягких французских булок, да выпей чаю.


Шифрованный текст
Фэзыя йз зьи ахлш пвёнлш чугрщцкфнлш дцосн, жг еютзм ъгб.

  Исходный программный код


В программе используется переменная в которой забиты все символы англ. и русского алфавита, знаки препинания, пробел и символ новой строки.

public static string abc = @"`1234567890-=\][poiuytrewqasdfghjkl;'/., mnbvcxzQWERTYUIOPLKJHGFDSAZXCVBNMйцукенгшщзхъэждлорпавыфячсмитьбюЙЦУКЕНГШЩЗХЪЭЖДЛОРПАВЫФЯЧСМИТЬБЮ" + Environment.NewLine;

Символ '@'нужен для отключения '\]' последовательности символов.

Вся логика программы сосредоточена в этой строчке:

Data2 += abc[abc.IndexOf(Data[i]) + key];

В переменную Data2 мы заносим шифрованную букву, которую вычисляем из ключа key.
Пример
Hello world!
Первая буква (при i = 1) - 'H'. Ищем под каким номером она стоит в нашем алфавите abc - abc.IndexOf('H'). Допустим под номером 30. К этому числу + 3 = 33. Дальше присваиваем Data2 += abc[33];

Исходники лежат здесь -
скачать с upload.com.ua - http://upload.com.ua/get/901647108/ и здесь - скачать с rapidgator.net - http://rapidgator.net/133591/Caesar_cipher_implementation.rar.html

Комментариев нет: