среда, 5 сентября 2012 г.

8. Шифрование и дешифрование пароля и сохранение в txt-файл (string, char, for, ord, chr) (Delphi)

Кидаем на форму два Edit'а и две кнопки.

Суть такова... В первый Edit вводится пароль по нажатию кнопки он шифруется и записывается в текстовый файл. Во второй Edit вводится пароль для проверки, по нажатию кнопки он дешифруется и сравнивает текст из второго Edit'а с дешифрованным паролём. Если верно выводит сообщение "Верно", если нет, то соответственно, "Не верно".


В var пропишем переменные


s,shifr:string; //переменные для шифрования, дешифрования
i:integer; //для цикла
f:System.Text; //для текстового документа


Шифрование будет происходит так:

  • цикл посимвольно при помощи функции Ord будет преобразовывать символы в их числовые эквиваленты (например: W=87, ?=63 и т.д.)
  • будет производится сдвиг этих эквивалентов, в моём примере сдвиг равен 7
  • при помощи функции Chr, числовые эквиваленты со сдвигом будут преобразовываться в соответствующие им символы
  • сохранение в файл


В первой кнопке пишем:


s:=Edit1.Text; //заносим пароль в переменную
for i:=1 to length(s) do //length(s) определяет длину строки "s"
shifr:=shifr + chr(Ord(s[i])+7);  //шифрование
assignfile(f, '1.txt'); // привязка названия файла к файловой переменной
Rewrite(f); //создание или пересоздание файла
Write(f, shifr); //запись переменной shifr в файл
CloseFile(f);
edit1.Clear;

Дешифрование происходит как шифрование только в обратную сторону :)
Во второй кнопке пишем:


assignfile(f, '1.txt'); //
Reset(f);

read(f, shifr); //чтение переменной из файла
s:='';
for i:=1 to length(shifr) do //дешифрование
s:=s + chr(Ord(shifr[i])-7);

if edit2.Text=s then
  showmessage('Верно')
else
  showmessage('Не верно');
end;

P.S. если хотите чтобы при вводе пароля в edit'е выводились звёздочки, то в его свойствах в поле PasswordChar поставьте * или любой другой символ.

Комментариев нет:

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