Валерий Борисок - Delphi. Трюки и эффекты

Здесь есть возможность читать онлайн «Валерий Борисок - Delphi. Трюки и эффекты» — ознакомительный отрывок электронной книги совершенно бесплатно, а после прочтения отрывка купить полную версию. В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программы, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Delphi. Трюки и эффекты: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Delphi. Трюки и эффекты»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

«Delphi. Трюки и эффекты», как и все издания данной серии, адресована тем, кто хочет научиться делать с помощью уже знакомых программных пакетов новые, интересные вещи. В первой части книги многое говорится о среде разработки Delphi (самых последних версий) и программировании на языке Object Pascal. Благодаря этому издание подходит и новичкам, и начинающим программистам. Вторая (основная) часть книги описывает удивительные возможности, скрытые в языке, и на примерах учит читателя программистским фокусам – от «мышек-невидимок» и «непослушных окон» до воспроизведения МРЗ и управления офисными программами Word и Excel из приложений Delphi. Купив эту книгу, вы пройдете непростой путь к вершинам программистского мастерства весело и интересно.

Delphi. Трюки и эффекты — читать онлайн ознакомительный отрывок

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Delphi. Трюки и эффекты», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

//bEncrypt = False – дешифровать

procedure TfmEncryptingAutoKey.EncryptDecrypt(SrcLines,

DstLines: TStrings; bEncrypt: Boolean);

var

i: Integer;

strKey: String;

begin

strKey := GetKey;

if strKey <> \'\' then

begin

DstLines.BeginUpdate;

DstLines.Clear;

if bEncrypt then

for i := 0 to SrcLines.Count – 1 do

DstLines.Add(EncryptString(SrcLines[i], strKey))

else

for i := 0 to SrcLines.Count – 1 do

DstLines.Add(DecryptString(SrcLines[i], strKey));

DstLines.EndUpdate;

end

else

MessageDlg(\'Ошибка: ключ задан неверно\', mtError, [mbOk], 0);

end;

procedure TfmEncryptingAutoKey.btnEncryptMessageClick(Sender:

TObject);

begin

EncryptDecrypt(mmDecryptMessage.Lines,

mmEncryptMessage.Lines, True);

end;

procedure TfmEncryptingAutoKey.btnDecpyptMessageClick(Sender:

TObject);

begin

EncryptDecrypt(mmEncryptMessage.Lines,

mmDecryptMessage.Lines, False);

end;

end.

Пример того, как работает полученное нами приложение, показан на рис. 12.7.

Рис. 12.7. Результат работы приложения «Шифр с автоключом»

12.6. Взлом

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

Абсолютная частота буквы есть количество раз, которое она встречается в тексте. Относительная частота – это отношение абсолютной частоты символов к общему количеству символов в сообщении. Теперь оговоримся, что наша программа будет взламывать русскоязычные тексты. Поэтому приведем здесь относительные частоты букв русского языка (табл. 12.4).

Таблица 12.4.

Относительные частоты букв русского языка

Теоретическая основа для нашей программы имеется, поэтому перейдем к реализации задуманного. Создадим новое приложение. На форму поместим два компонента классов ТМето с соответствующими HMeHaMHmmDecryptMessage HmmEncryptMessage, TpHTLabel, а также по одному компоненту KnaccoBTEdit и TButton – edKey HbtnHackEncrypting соответственно. Текстовый редактор mmDecryptMessage и текстовое поле edKey сделаем доступными только для чтения, поскольку мы будем вводить лишь зашифрованное сообщение, а ключ и соответствующий открытый текст будет определяться нашей программой. Результат разработки интерфейса программы показан на рис. 12.8.

Рис. 12.8. Интерфейс программы «Шифр Цезаря – взлом»

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

...

Листинг 12.23.

Объявление типов и класса нашей формы

type

//множество всех русских букв

TRusLetters = set of Char;

//исходный алфавит русского языка

TRusSrcAlphabet = array [0..65] of Char;

//относительные частоты русских букв

TRusFrequency = array [0..32] of Real;

TFrequency = array [Char] of Real;

TRusDstAlphabet = array [Char] of Char;

TfmHackEncrypting = class(TForm)

mmDecryptMessage: TMemo;

mmEncryptMessage: TMemo;

lbDecryptMessage: TLabel;

lbEncryptMessage: TLabel;

btnHackEncrypting: TButton;

edKey: TEdit;

lbKey: TLabel;

procedure FormCreate(Sender: TObject);

procedure btnHackEncryptingClick(Sender: TObject);

private

{ Private declarations }

//значение ключа, вычисляемого на основании частотного

//анализа

nHackKey: Integer;

//количество букв русского алфавита в закодированном

//сообщении

nCount: LongInt;

//абсолютная частота букв русского алфавита

//(то есть количество каждой буквы по отдельности)

//в зашифрованном сообщении

AbsFrequency: TFrequency;

//относительная частота букв русского алфавита в шифровке

RelFreqInMsg: TFrequency;

//относительная частота букв русского алфавита

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Delphi. Трюки и эффекты»

Представляем Вашему вниманию похожие книги на «Delphi. Трюки и эффекты» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Delphi. Трюки и эффекты»

Обсуждение, отзывы о книге «Delphi. Трюки и эффекты» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x