Программа шифрования Двойная перестановка по ключу - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток, нужна помощь, нужно выполнить шифровку текста с помощью алгоритма двойной перестановки, может кто знает, как выглядит алгоритм этой шифровки на C#?

Решение задачи: «Программа шифрования Двойная перестановка по ключу»

textual
Листинг программы
  1.  Form1: TForm1;
  2.   i,x,y,z,r,o,a,a2,a3,m,mx,m0: byte;
  3.   Text0,Text1: String;
  4.   ShifrStolb: array [1..7] of byte = (1,2,3,7,6,5,4); //ключ к столбцам 7 цифр
  5.   ShifrStrok: array [1..6] of byte = (1,2,6,3,5,4); //ключ к строкам 6 цифр
  6.   Hash: array [1..42] of string;
  7. //---Save-----------------------------------------------------------------------
  8.   F:TextFile;
  9.   u,g:integer;
  10.   so:string;
  11.  
  12. implementation
  13.  
  14. {$R *.dfm}
  15. //-----------------------Нумерация StringGrid-----------------------------------
  16. procedure TForm1.FormActivate(Sender: TObject);
  17. begin
  18.   for x := 1 to StringGrid1.RowCount-1 do
  19.     StringGrid1.Cells[0,x]:= inttostr(StringGrid1.Row+x-1);
  20.   for y := 1 to StringGrid1.ColCount-1 do
  21.     StringGrid1.Cells[y,0]:= inttostr(StringGrid1.Col+y-1);
  22.   Shifr.Enabled:= False;//выкл.кн. шифр
  23.   Save.Enabled := False;
  24. end;
  25. // -Проверка символов на количесво и изменение пробелов на другие символы-------
  26. procedure TForm1.Knopka1Click(Sender: TObject);
  27. begin
  28.   m :=(StringGrid1.RowCount-1)*(StringGrid1.ColCount-1); m0 :=m-1;
  29.   Shifr.Enabled:= True;
  30.   Text0 := edit1.Text;
  31.   i := length(Text0);
  32.   if i > m then ShowMessage ('Вы ввели больше '+inttostr(m)+' символов.Лишние обрезаны!');
  33.   if i < m then ShowMessage ('Вы ввели меньше '+inttostr(m)+' символов. Данные сохранены.');
  34.     SetLength (Text0,m);
  35.   for mx := 0 to m0 do
  36.   begin
  37.   if Text0[mx] = ' ' then Text0[mx] := #63;//заполнение ? между словами
  38.   end ;
  39.   for mx := i to m0 do Text0[mx+1] := #63; //заполнение ? лишнего пространства
  40. end;
  41. //------------------ Сортировка по столбцам ------------------------------------
  42. procedure TForm1.ShifrClick(Sender: TObject);
  43. begin
  44.  y:=1; x:=1; o:=1; a:=1; a2:=1; a3:=1;
  45. for y := 1 to StringGrid1.RowCount-1 do
  46.   begin
  47.     for x := 1 to StringGrid1.ColCount-1 do
  48.      begin
  49.      StringGrid1.Cells[ShifrStolb[x],y]:= Text0[o];
  50.      o:=o+1;
  51.     end
  52.    end;
  53. //---------------------копирование строки в кеш---------------------------------
  54.   begin
  55.     for y := 1 to StringGrid1.RowCount-1 do
  56.   begin
  57.     for x := 1 to StringGrid1.ColCount-1 do
  58.      begin
  59.      Hash[a]:=StringGrid1.Cells[x,y];
  60.      a:=a+1;
  61.    end ;
  62.   end;
  63. //------------------ Сортировка по строкам -------------------------------------
  64.   begin
  65.   for x := 1 to  StringGrid1.ColCount-1 do
  66.   begin
  67.     for y := 1 to StringGrid1.RowCount-1 do
  68.      begin
  69.      StringGrid1.Cells[x,ShifrStrok[y]]:= Hash[a2];
  70.      a2:=a2+1;
  71.     end;
  72.    end;
  73. //-----------------------Вывод шифра--------------------------------------------
  74.  begin
  75.     for y := 1 to StringGrid1.RowCount-1 do
  76.     begin
  77.       for x := 1 to StringGrid1.ColCount-1 do
  78.       begin
  79.       Text1:= Text1+(StringGrid1.Cells[x,y]);
  80.       a3:=a3+1 ;
  81.      end;
  82.      end;
  83.      MainMemo.Lines.Add(text1);
  84.      SetLength(Text1,0);
  85.      Shifr.Enabled:= False;
  86.      Save.Enabled := True;
  87.     end;
  88.    end;
  89.  end;
  90. end;
  91. //---------------Запись в Файл--------------------------------------------------
  92. procedure TForm1.SaveClick(Sender: TObject);
  93. begin
  94.   AssignFile(f,'Result.txt');
  95.   Rewrite(f);
  96.   for u:=0 to StringGrid1.RowCount-1 do begin
  97.     so:='';
  98.     For g:=0 to StringGrid1.ColCount-1 do
  99.       so:=so+StringGrid1.Cells[g,u]+' ';
  100.     writeln(f,so);
  101.     writeln(f,'');
  102.   end;
  103.   CloseFile(f);
  104.   Save.Enabled := False;
  105.   end;
  106.  
  107. end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы