Пн, 19.02.2018, 01:11
Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
Меню сайта
Категории раздела
Windows [4]
Android [0]
Поиск
Наш опрос
Какие из моих программ вам порнавились?
Всего ответов: 5
Реклама
Счетчики
Рейтинг@Mail.ru
Simply-Art
Главная » Статьи » Программирование » Windows

Шифрование данных

Способ № 1

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

Самый простой способ сделать такое шифрование, по-моему, это чтение текста побуквенно. Для начала разместим на форме 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;

Способ № 2

Второй способ шифрования производится путём изменения "номера" символа.

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
  // код символа исходного текста + код символа ключа
  // пароль при этом умножается на +/- 1
  Text[I]:=Chr (ord (Text[I]) + Sign*ord (Key[I mod KeyLength+1]));
  //результат усилий
  Result:=Text;
End;
Разберём по порядку:
Это две функции в одной параметром Encode мы выбираем шифровать или расшифровывать.
Key – ключ. Ключом является строка (до 2Гб). Она может содержать любые символы, включая пробелы.
Text здесь нужно ввести либо шифруемый либо зашифрованный текст.
Result это для того чтоб не создавать переменную для хранения результата в обработчике нажатия на кнопку.
В обработчике нажатия на кнопку пишем:

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;

P.S.

Мы рассмотрели два самых простых способа шифрования текста с использованием ключа - алфавита и ключа - текста.

copyright by Simply-Art

Категория: Windows | Добавил: Simply-Art (08.11.2013)
Просмотров: 196 | Комментарии: 1 | Рейтинг: 0.0/0
Всего комментариев: 1
1  
Вечер Добрый.
С большим удовольствием прочитал статью.. Удивил один момент : Вы используете кучу IF-ов.. 1) Это не очень хорошо для производительности (если уж баловаться IF-ом, то ставить else)
2) Не очень красиво (ИМХО)
Так что, тут совершенно допустимо побаловаться case'ом..
Удачи !)

Имя *:
Email *:
Код *:
Хостинг от uCozCopyright Simply-Art © 2018