Crypt – Delphi програма для шифрування (исходники), Різне, Програмування, статті

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

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

Найпростіший спосіб зробити таке шифрування, по-моєму, це читання тексту побуквенно. Для початку розмістимо на формі Memo, два Edit і чотири Button. Напишемо процедуру заміни чисел від 0 до 9 і зворотний їй процедуру:

Procedure Code (Code: String; var Rez: String);
Begin
/ / Умовно кажучи, те, що нижче це база шифровки. Тобто символи (слова, фрази) які знає програма.
If code=”0″ then Rez:=”5″;
If code = “1” then Rez: = “ї”;
If code = “2” then Rez: = “и”;
If code = “3” then Rez: = “м”;
If code=”4″ then Rez:=”9″;
If code=”5″ then Rez:=”8″;
If code=”6″ then Rez:=”*”;
If code=”7″ then Rez:=”-“;
If code=”8″ then Rez:=”+”;
If code=”9″ then Rez:=”!”;
End;

Procedure Decode (Code: String; var Rez: String);
Begin
/ / Умовно кажучи, те, що нижче це база розшифровки. Тобто символи (слова, фрази) які знає програма.
If code=”5″ then Rez:=”0″;
If code = “й” then Rez: = “1”;
If code = “и” then Rez: = “2”;
If code = “м” then Rez: = “3”;
If code=”9″ then Rez:=”4″;
If code=”8″ then Rez:=”5″;
If code=”*” then Rez:=”6″;
If code=”-” then Rez:=”7″;
If code=”+” then Rez:=”8″;
If code=”!” then Rez:=”9″;
End;

Тепер у події OnClick в Button1 і Button2 пишемо:

Procedure TForm1.Button1Click (Sender: TObject);
Var
Result: String; / / Змінна потрібна для зберігання результату
Begin
Code (Edit1.Text, Result); / / Процедура бере текст з Edit1 і звіряє з базою і якщо не знаходить то результат буде пусте значення (тобто
Result:=”” ).
Edit1.Text:=Result;
End;

Procedure TForm1.Button2Click (Sender: TObject);
Var
Result: String; / / Змінна потрібна для зберігання результату
Begin
Decode (Edit1.Text, Result); / / Процедура бере текст з Edit1 і звіряє з базою і якщо не знаходить то результат буде пусте значення (тобто Result: = “”).
Edit1.Text:=Result;
End;

Другий спосіб шифрування здійснюється шляхом зміни “номера” символу.

Function Crypt (Text, Key: String; Encode: Boolean): String;
Var
I, KeyLength: integer;
Sign: ShortInt;
Begin
KeyLength:=Length (Key);
If Encode then Sign: = -1 else Sign: = 1; / / шифрувати або розшифровувати?
For I:=1 to Length (Text) do
/ / Код символу вихідного тексту складається з кодом символу ключа
/ / Пароль при цьому збільшується
Text[I]:=Chr (ord (Text[I]) +Sign*ord (Key[I mod KeyLength+1]));
/ / Результат зусиль
Result:=Text;
End;


Розберемо по порядку:


  1. Це дві функції в одній параметром Encode ми вибираємо шифрувати або розшифровувати.
  2. Key – ключ. Ключем є рядок (до 2Гб). Вона може містити будь-які символи, включаючи пробіли.
  3. Text тут потрібно ввести або шіфруемий або зашифрований текст.
  4. Result це для того щоб не створювати змінну для зберігання результату в обробнику натиснення на кнопку.
  5. В обробнику натиснення на кнопку пишемо:

Procedure TForm1.Button3Click (Sender: TObject);
Begin
/ / Якщо шифрувати
Memo1.Text:= Crypt (Memo1.Text, Edit2.Text, false);
End;

Procedure TForm1.Button4Click (Sender: TObject);
Begin
/ / Якщо розшифрувати
Memo1.Text:= Crypt (Memo1.Text, Edit2.Text, true);
End;


Ісходник додається (для Delphi 7) один на два способи шифрування.

Схожі статті:


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

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*