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

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 48 49 50 51 52 53 54 55 56 ... 59

Листинг 11.25.

Присоединение/отсоединение от сервера

procedure TfrmClient.cmbConnectClick(Sender: TObject);

begin

if (cmbConnect.Caption = 'Подключиться') then

begin

//Проверим, чтобы были введены имя сервера

//и имя пользователя

if (txtServer.Text = '')then

begin

MessageDlg('Введите имя сервера в текстовое поле.',

mtInformation, [mbOK], 0);

Exit;

end

else if (txtUser.Text = '')then

begin

MessageDlg('Введите имя пользователя в текстовое поле.',

mtInformation, [mbOK], 0);

Exit;

end;

//Пытаемся подключиться к серверу

try

TCPClient.Host := txtServer.Text;

TCPClient.Connect;

except

MessageDlg('Не удается соединиться с сервером',mtError,

[mbOK], 0);

end;

end

else

//Отключаемся от сервера

TCPClient.Disconnect;

end;

Обработчик нажатия кнопки cmbSend (листинг 11.26) отправляет сообщение, которое могут прочесть все пользователи, присоединенные к серверу.

...

Листинг 11.26.

Отправка сообщения всем собеседникам

procedure TfrmClient.cmbSendClick(Sender: TObject);

begin

if (txtMessage.Text <> '') then

begin

//Отправка сообщения всем собеседникам

TCPClient.WriteLn('text:' + txtMessage.Text);

txtMessage.Text := '

txtMessage.SetFocus;

end;

end;

При двойном щелчке кнопкой мыши на имени в списке пользователей отправляется сообщение, которое получает только выделенный в списке пользователь (листинг 11.27).

...

Листинг 11.27.

Отправка сообщения заданному собеседнику

procedure TfrmClient.lstUsersDblClick(Sender: TObject);

begin

if ((lstUsers.ItemIndex >= 0) and (txtMessage.Text <> ''))

then

begin

//Отправим сообщение только для выбранного собеседника

//(сообщение вида «имя_собеседника:текст_сообщения»)

TCPClient.WriteLn(lstUsers.Items.Strings[lstUsers.ItemIndex] +

':' + txtMessage.Text);

txtMessage.SetFocus;

end;

end;

Сразу после соединения с сервером, тоесть в обработчикеTfrmClient. TCPClient-Connected, приведенном в листинге 11.28, клиентская программа отправляет имя пользователя серверу. При отсоединении от сервера (тот же листинг 11.28) происходит соответствующее оформление внешнего вида формы frmClient.

...

Листинг 11.28.

Обработка присоединения/отсоединения от сервера

procedure TfrmClient.TCPClientConnected(Sender: TObject);

begin

//Отправляем на сервер имя пользователя

TCPClient.WriteLn('name:' + txtUser.Text);

end;

procedure TfrmClient.TCPClientDisconnected(Sender: TObject);

begin

//Оформим форму для отсоединенного от сервера состояния

Disconnect;

end;

Ключевой обработчик (именно по таймеру проверяется факт прихода сообщения от сервера) приведен в листинге 11.29. Для элемента управления TCPClient значение тайм-аута установлено для того, чтобы при отсутствии принятых данных клиентская программа не переходила надолго в состояние ожидания, а генерировалось исключение, по которому и можно судить, что данных еще нет (см. блок try в этом обработчике).

...

Листинг 11.29.

Проверка, есть ли данные от сервера

procedure TfrmClient.Timer1Timer(Sender: TObject);

var strMessage: string;

begin

//Проверим, нет ли для нас сообщения

if (TCPClient.Connected)then

begin

try

strMessage := TCPClient.ReadLn;

if (strMessage <> '')then

ProcessMessage(strMessage);

except

on EIdReadTimeout do ; //Ошибки тайм-аута игнорируем

else

//При остальных ошибках отсоединяемся от сервера

TCPClient.Disconnect;

end;

end;

end;

end.

...

Примечание

Чтобы при запуске клиентского приложения из среды Delphi постоянно не появлялись сообщения об исключениях (возникают при истечении тайм-аута в TfrmClient.TimeiiTimer), снимите флажок Stop on Delphi Exceptions на вкладке Language Exceptions диалогового окна Debugger Options (меню Tools → Debugger Options).

На этом рассмотрение сетевого взаимодействия средствами Delphi в рамках этой книги завершается. Конечно, в главе перечислены далеко не все типы соединений и служб, поддерживаемых хотя бы компонентами, поставляемыми вместе с Delphi. Для рассмотрения работы со всеми имеющимися компонентами понадобилось бы написать целую книгу. Тем не менее хочется надеяться, что приведенные в главе примеры помогут вам в освоении механизмов программного взаимодействия между частями компьютерной сети.

Глава 12 Шифрование

• Основы криптографии

• Шифр простой подстановки

• Транспозиция

• Шифр Виженера и его варианты

• Шифр с автоключом

• Взлом

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

В отношении задачи о секретной передаче нетрудно прийти к выводу, что есть три способа ее реализации в компьютерных системах:

• создание абсолютно надежного канала связи, к которому есть доступ только у отправителя и адресата;

• использование общедоступного канала связи, но скрытие самого факта передачи информации;

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

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

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

Первые следы стеганографических методов теряются в глубокой древности. Например, известен такой способ скрытия письменного сообщения: голову раба брили, на коже головы писали сообщение и после отрастания волос раба отправляли к адресату.

Из детективных произведений хорошо известны различные способы тайнописи между строк обычного, незащищаемого текста: от молока до сложных химических реактивов с последующей обработкой.

Оттуда же известен метод «микроточки»: сообщение записывается с помощью современной техники на очень маленький носитель (микроточку), который пересылается с обычным письмом, например, под маркой или где-нибудь в другом, заранее обусловленном месте.

В настоящее время в связи с широким распространением компьютеров известно много тонких методов «запрятывания» защищаемых данных внутри больших объемов информации, хранящейся на компьютере.

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

12.1. Основы криптографии

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

Для начала рассмотрим эти шифры, а позжереализуем их. Начнем, пожалуй, с шифра замены как с самого простого и наиболее популярного. Примерами самых распространенных из известных шифров замены могут служить шифр Цезаря, «цифирная азбука» Петра Великого и «пляшущие человечки» А. Конан Дойла. Из самого названия видно, что шифр замены осуществляет преобразование заменой букв или других «частей» открытого текста на аналогичные «части» шифрованного текста. Легко дать математическое описание шифра замены. Пусть X и Y – два алфавита (открытого и шифрованного текстов соответственно), состоящие из одинакового количества символов. Пусть также g: X → Y – взаимнооднозначное отображение X в Y. Тогда шифр замены действует так: открытый текст х1х2…хп преобразуется в шифрованный текст g(x1)g(x2)…g(xn).

Шифр перестановки, как видно из названия, осуществляет преобразование перестановки букв в открытом тексте. Примером одного из известных шифров перестановкой может служить шифр «Сцитала». Обычно открытый текст разбивается на отрезки равной длины, и каждый отрезок шифруется независимо. Пусть, например, длина отрезков равна п и g – взаимнооднозначное отображение множества {1,2…., п} в себя. Тогда шифр перестановки действует так: отрезок открытого текста х1х2…хп преобразуется в отрезок шифрованного текста xg(1)xg(2)…xg(n).

Важнейшим для развития криптографии был вывод К. Шеннона о существовании и единственности абсолютно стойкого шифра. Единственным таким шифром является какая-нибудь форма так называемой ленты однократного использования, в которой открытый текст «объединяется» с полностью случайным ключом такой же длины.

1 ... 48 49 50 51 52 53 54 55 56 ... 59
На этом сайте Вы можете читать книги онлайн бесплатно русская версия Delphi. Трюки и эффекты - Валерий Борисок.

Оставить комментарий