Программа шифрования Двойная перестановка по ключу - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д