Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Delphi. Π’Ρ€ΡŽΠΊΠΈ ΠΈ эффСкты». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 52

Автор Π’Π°Π»Π΅Ρ€ΠΈΠΉ Борисок

Листинг 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).

Π’Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΠΌ для развития ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ Π±Ρ‹Π» Π²Ρ‹Π²ΠΎΠ΄ К. Π¨Π΅Π½Π½ΠΎΠ½Π° ΠΎ сущСствовании ΠΈ СдинствСнности Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ стойкого ΡˆΠΈΡ„Ρ€Π°. ЕдинствСнным Ρ‚Π°ΠΊΠΈΠΌ ΡˆΠΈΡ„Ρ€ΠΎΠΌ являСтся какая-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ„ΠΎΡ€ΠΌΠ° Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Π»Π΅Π½Ρ‚Ρ‹ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ использования, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ тСкст Β«ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ΡΡΒ» с ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ случайным ΠΊΠ»ΡŽΡ‡ΠΎΠΌ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Π΄Π»ΠΈΠ½Ρ‹.