Подписаться на RSS рассылку
Главная » Статьи по Delphi » Текст и строки » Простейшее криптование текста

Простейшее криптование текста

Автор: Kindman

Tweet
Каждый символ ANSI (ASCII) имеет свой порядковый номер, функция, возвращающая номер символа Ord(S), а функция возвращения символа по номеру - Chr(N), где S - символ, а N - порядковый номер. С помощью этих двух функций можно провести простейшую криптовку текста.

Выложите на форму две кнопки TButton и область просмотра TRichEdit.

Обработчик OnClick для кнопки, которая будет вызывать криптовку:

procedure TForm1.Button1Click(Sender: TObject);
var S: string;
    i: Cardinal;
begin
  if not (RichEdit1.Text = '') then
  begin
    S := RichEdit1.Text;
    for i:=1 to Length(S) do
      if (Ord(S[i]) <= 253) then S[i]:=Chr(Ord(S[i])+2);

    RichEdit1.Text:=S
  end
  else
    Application.MessageBox('Поле не заполнено', 'Пустое поле', mb_Ok);

end;

Обработчик OnClick для кнопки декриптовки:

procedure TForm1.Button2Click(Sender: TObject);
var S: string;
    i: Cardinal;
begin
  S := RichEdit1.Text;
  for i:=1 to Length(S) do
    if (Ord(S[i]) <= 253) then S[i] := Chr(Ord(S[i])-2);

  RichEdit1.Text := S;
end;

Просмотров: 4617

Обсудить на форуме

0   Спам
(25.03.2012)
2. Molotov Artem
Из-за "if (Ord(S) <= 253) then" криптование кривое получается... cool

ИМХО если "if (Ord(S) <= 253) then S:=Chr(Ord(S)+2);" то символ с кодом 253 криптуется в символ с кодом 255... А в декриптовании получится так, что символ который стал символом с 255 кодом ASCII просто напросто не перекодируеться в символ с кодом 253 из-за "if (Ord(S) <= 253) then" ... он просто напросто не пройдёт условие "Ord(S) <= 253"....

Я советую писать так:

Обработчик OnClick для кнопки, которая будет вызывать криптовку:

Код
procedure TForm1.Button1Click(Sender: TObject);
var S: string;
i: Cardinal;
begin
if not (RichEdit1.Text = '') then
begin
S := RichEdit1.Text;
for i:=1 to Length(S) do S[i]:=Chr(Ord(S[i])+1);

RichEdit1.Text:=S
end
else
Application.MessageBox('Поле не заполнено', 'Пустое поле', mb_Ok);

end;


Обработчик OnClick для кнопки декриптовки:

Код
procedure TForm1.Button2Click(Sender: TObject);
var S: string;
i: Cardinal;
begin
S := RichEdit1.Text;
for i:=1 to Length(S) do S [i]:= Chr(Ord(S[i])-1);

RichEdit1.Text := S;
end;


При таком коде возможна малейшая оплошность... thumb

0   Спам
(13.05.2009)
1. NekitoS
Если 2 раза нажать на кнопку криптовки, а вотом два раза нажать на кнопку дериптовки, то получится не совсем исходный текст smile


Имя *:
Email:


Код *:

Copyright © 2008 - 2018 Программирование на Delphi для начинающих и не только.

Полнота авторских прав на все материалы, опубликованные на сервере DelphiDevelop.ru принадлежит их авторам.

Перепечатка материалов разрешается с указанием авторства и гиперссылки на первоисточник информации.