Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2007, 19:11   #1
MARGO
 
Регистрация: 01.11.2007
Сообщений: 4
По умолчанию расшифрование текста с помощью генератора ПСЧ

Люди отзовитесь неужели никто не может помочь. У меня такое задание шифрование и расшифрование текста с помощью генератора псевдослучайных чисел. Я написала программу. И вот результат:открытый текст зашифровывается, а закрытый текст чего то расшифровываться не хочет. Исправте пожалуйста мои ошибки. Вот мой код
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

  ot,zt:string; {ot-открытый текст , zt-закрытый (шифрованный текст) текст}
  sot: string[1]; {sot (szt) - текущие символы открытого (закрытого) текста}
  szt: string[100];
  flag:Boolean;
  l, i, j, ko, kz, h:integer; { l - длина открытого текста}
  Ti:longint;  {TI - псевдослучайное число}

CONST
  N=33; {количество разрешенных символов}
  T0=3;
  A=5;
  M=32 ;
  C=9;

  {Таблица соответствия символов с числами}
  ts: array [0..N-1] of char=('а','б','в','г','д','е','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ъ','ы','ь','э','ю','я',' ');



implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Ti:=T0;
ot:=Edit1.Text;
l:=length(ot); {определяем длину открытого текста}
Edit2.Text:='';
Label1. Caption:= ' Открытый текст ';

for i:=0 to l do
  begin
  sot[1]:=ot[i];

  for j:=0 to N-1 do  if ts[j]=sot[1] then ko:=j;
  Ti:=(A*Ti+C) mod M; {формируем гамму шифра}
  kz:=(ko + Ti) mod N; {суммирование "по модулю N"}

  szt[i]:=ts[kz];
  zt:=zt+szt;
  Edit2.Text:=szt;
  Label2. Caption:= ' Закрытый текст ';

end

end;

procedure TForm1.Button2Click(Sender: TObject);
begin

Ti:=T0;
edit1.Text:='';
l:=length(edit2.text);
szt:=edit2.text;
sot:='';
for i:=1 to l do
  begin
   Ti:=(A*Ti+C) mod M; {формируем гамму шифра}
   zt:=copy(szt,i,1); {извлекаем очередной символ из открытого текста}
   flag:=false;
     for j:=0 to m-1 do  if ts[j]=zt then
         begin
          kz:=j;
          flag:=true;
         end;
      if flag then  
         begin
          if (kz - Ti)>=0 then  ko:=(kz - Ti)
                          else  ko:=(kz - Ti)+n;
          ot:=ts[ko]; 
          sot:=sot+ot; 

end



end;
 end;

end.

Последний раз редактировалось MARGO; 30.11.2007 в 22:56.
MARGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сверка данных с помощью VBA mal001 Microsoft Office Excel 2 06.08.2008 14:39
Открыть с помощью... Влажимир Общие вопросы Delphi 3 10.03.2008 16:27
открыть с помощью tarasov Win Api 3 13.12.2007 19:00
Паскаль. задача с помощью FOR TO DO Маринуська Помощь студентам 7 29.10.2007 18:49
С++ Создать класс содержащий 3х-мерный массив int'ов, заполнять с помощью генератора случайных чисел vipER Помощь студентам 1 22.09.2007 22:08