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

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

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

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

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

textual
Листинг программы
 Form1: TForm1;
  i,x,y,z,r,o,a,a2,a3,m,mx,m0: byte;
  Text0,Text1: String;
  ShifrStolb: array [1..7] of byte = (1,2,3,7,6,5,4); //ключ к столбцам 7 цифр
  ShifrStrok: array [1..6] of byte = (1,2,6,3,5,4); //ключ к строкам 6 цифр
  Hash: array [1..42] of string;
//---Save-----------------------------------------------------------------------
  F:TextFile;
  u,g:integer;
  so:string;
 
implementation
 
{$R *.dfm}
//-----------------------Нумерация StringGrid-----------------------------------
procedure TForm1.FormActivate(Sender: TObject);
begin
  for x := 1 to StringGrid1.RowCount-1 do
    StringGrid1.Cells[0,x]:= inttostr(StringGrid1.Row+x-1);
  for y := 1 to StringGrid1.ColCount-1 do
    StringGrid1.Cells[y,0]:= inttostr(StringGrid1.Col+y-1);
  Shifr.Enabled:= False;//выкл.кн. шифр
  Save.Enabled := False;
end;
// -Проверка символов на количесво и изменение пробелов на другие символы-------
procedure TForm1.Knopka1Click(Sender: TObject);
begin
  m :=(StringGrid1.RowCount-1)*(StringGrid1.ColCount-1); m0 :=m-1;
  Shifr.Enabled:= True;
  Text0 := edit1.Text;
  i := length(Text0);
  if i > m then ShowMessage ('Вы ввели больше '+inttostr(m)+' символов.Лишние обрезаны!');
  if i < m then ShowMessage ('Вы ввели меньше '+inttostr(m)+' символов. Данные сохранены.');
    SetLength (Text0,m);
  for mx := 0 to m0 do
  begin
  if Text0[mx] = ' ' then Text0[mx] := #63;//заполнение ? между словами
  end ;
  for mx := i to m0 do Text0[mx+1] := #63; //заполнение ? лишнего пространства
end;
//------------------ Сортировка по столбцам ------------------------------------
procedure TForm1.ShifrClick(Sender: TObject);
begin
 y:=1; x:=1; o:=1; a:=1; a2:=1; a3:=1;
for y := 1 to StringGrid1.RowCount-1 do
  begin
    for x := 1 to StringGrid1.ColCount-1 do
     begin
     StringGrid1.Cells[ShifrStolb[x],y]:= Text0[o];
     o:=o+1;
    end
   end;
//---------------------копирование строки в кеш---------------------------------
  begin
    for y := 1 to StringGrid1.RowCount-1 do
  begin
    for x := 1 to StringGrid1.ColCount-1 do
     begin
     Hash[a]:=StringGrid1.Cells[x,y];
     a:=a+1;
   end ;
  end;
//------------------ Сортировка по строкам -------------------------------------
  begin
  for x := 1 to  StringGrid1.ColCount-1 do
  begin
    for y := 1 to StringGrid1.RowCount-1 do
     begin
     StringGrid1.Cells[x,ShifrStrok[y]]:= Hash[a2];
     a2:=a2+1;
    end;
   end;
//-----------------------Вывод шифра--------------------------------------------
 begin
    for y := 1 to StringGrid1.RowCount-1 do
    begin
      for x := 1 to StringGrid1.ColCount-1 do
      begin
      Text1:= Text1+(StringGrid1.Cells[x,y]);
      a3:=a3+1 ;
     end;
     end;
     MainMemo.Lines.Add(text1);
     SetLength(Text1,0);
     Shifr.Enabled:= False;
     Save.Enabled := True;
    end;
   end;
 end;
end;
//---------------Запись в Файл--------------------------------------------------
procedure TForm1.SaveClick(Sender: TObject);
begin
  AssignFile(f,'Result.txt');
  Rewrite(f);
  for u:=0 to StringGrid1.RowCount-1 do begin
    so:='';
    For g:=0 to StringGrid1.ColCount-1 do
      so:=so+StringGrid1.Cells[g,u]+' ';
    writeln(f,so);
    writeln(f,'');
  end;
  CloseFile(f);
  Save.Enabled := False;
  end;
 
end.

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


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

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

5   голосов , оценка 4.2 из 5
Похожие ответы