📄 mainuint.pas
字号:
{************************************}
{* 古典加密技术的演示 *}
{* 作者:程 亮 *}
{* 信电工程系 *}
{* 04级网络〈2〉班 *}
{* E-mail:999419@sohu.com *}
{************************************}
unit MainUint;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls, jpeg;
type
TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
Label4: TLabel;
ComboBox1: TComboBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
TabSheet2: TTabSheet;
Panel1: TPanel;
Label1: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Label2: TLabel;
Label3: TLabel;
Edit3: TEdit;
Panel2: TPanel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Button4: TButton;
Button5: TButton;
Button6: TButton;
TabSheet3: TTabSheet;
Panel3: TPanel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Label11: TLabel;
Edit10: TEdit;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Label12: TLabel;
Label13: TLabel;
Button10: TButton;
TabSheet4: TTabSheet;
Panel4: TPanel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label20: TLabel;
Label21: TLabel;
Label22: TLabel;
Label23: TLabel;
Label24: TLabel;
Label25: TLabel;
Label19: TLabel;
Label26: TLabel;
Label27: TLabel;
Label28: TLabel;
Label29: TLabel;
Label30: TLabel;
Label31: TLabel;
Label32: TLabel;
Label33: TLabel;
Label34: TLabel;
Label35: TLabel;
Label36: TLabel;
Label37: TLabel;
Label38: TLabel;
Label39: TLabel;
Label40: TLabel;
Label41: TLabel;
Label42: TLabel;
Label43: TLabel;
Label44: TLabel;
Label45: TLabel;
Label46: TLabel;
Label47: TLabel;
Label48: TLabel;
Label49: TLabel;
Label50: TLabel;
Label51: TLabel;
Label52: TLabel;
Label53: TLabel;
Label68: TLabel;
Label55: TLabel;
Label56: TLabel;
Label57: TLabel;
Label58: TLabel;
Label59: TLabel;
Label60: TLabel;
Label61: TLabel;
Label62: TLabel;
Label63: TLabel;
Label64: TLabel;
Label65: TLabel;
Label66: TLabel;
TabSheet5: TTabSheet;
Panel5: TPanel;
Label54: TLabel;
Label67: TLabel;
Label69: TLabel;
Edit11: TEdit;
Edit12: TEdit;
Edit13: TEdit;
Label70: TLabel;
ComboBox2: TComboBox;
Button11: TButton;
Button12: TButton;
Button13: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure k(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Edit10Change(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Edit7Change(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Edit11Change(Sender: TObject);
procedure Button13Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
ylen:integer;
end;
var
Form1: TForm1;
//定义矩阵FZ用来存放维吉尼亚密码代换方阵
FZ:array['a'..'z','a'..'z'] of char =
(('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'),
('B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','A'),
('C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','A','B'),
('D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','A','B','C'),
('E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','A','B','C','D'),
('F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','A','B','C','D','E'),
('G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','A','B','C','D','E','F'),
('H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','A','B','C','D','E','F','G'),
('I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','A','B','C','D','E','F','G','H'),
('J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','A','B','C','D','E','F','G','H','I'),
('K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','A','B','C','D','E','F','G','H','I','J'),
('L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','A','B','C','D','E','F','G','H','I','J','K'),
('M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','A','B','C','D','E','F','G','H','I','J','K','L'),
('N','O','P','Q','R','S','T','U','V','W','X','Y','Z','A','B','C','D','E','F','G','H','I','J','K','L','M'),
('O','P','Q','R','S','T','U','V','W','X','Y','Z','A','B','C','D','E','F','G','H','I','J','K','L','M','N'),
('P','Q','R','S','T','U','V','W','X','Y','Z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O'),
('Q','R','S','T','U','V','W','X','Y','Z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P'),
('R','S','T','U','V','W','X','Y','Z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q'),
('S','T','U','V','W','X','Y','Z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R'),
('T','U','V','W','X','Y','Z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S'),
('U','V','W','X','Y','Z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T'),
('V','W','X','Y','Z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U'),
('W','X','Y','Z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V'),
('X','Y','Z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W'),
('Y','Z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X'),
('Z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y'));
implementation
uses FZUnit;
{$R *.dfm}
function JIAMI(a:char;k:integer):Char;//乘法加密函数
var
i,j:integer;
begin
i:=ord(a)-97; //如果输入字母为a
if i=0 then
JIAMI:='A' //直接输出A
else //K为双数时,密文会变成两段相同的密文,解密是比较麻烦
begin
if k mod 2 <>0 then //k为单数正常加密
begin
j:=i*k+97;
while j>122 do
j:=j-26;
end
else //k为双数,如果输入字母大于'm'(即大于一半的长度),把密文往后
begin //推一位,让密文无重复
j:=i*k+97;
if ord(a)>109 then
j:=i*k+97+1;
while j>122 do
j:=j-26;
end;
JIAMI:=UpCase(chr(j));
end;
end;
procedure TForm1.Button1Click(Sender: TObject);//凯撒加密
var
code,c:string;
tlength,i,iAsc:integer;
begin
edit2.Text:='';
edit3.Text:='';
c:=TrimRight(edit1.Text);
tlength:=length(c);
code:='';
for i:=1 to tlength do //挨个字符判断,如果在A-Z、a-z之间
begin //取他们的ASCII码值加K
if ((c[i]>='A')and (c[i]<='Z')) then
begin
iasc:=ord(c[i])+strtoint(form1.ComboBox1.Text);
if (iasc>ord('Z')) then//如果相加后结果大于Z,则
iasc:=iasc-26; //从A开始取
code:=code+chr(iasc);
end else
if ((c[i]>='a')and (c[i]<='z')) then
begin
iasc:=ord(c[i])+strtoint(form1.ComboBox1.Text);
if (iasc>ord('z')) then
iasc:=iasc-26;
code:=code+chr(iasc);
end
else
code:=code+c[i];
end;
edit2.Text:=code;
end;
procedure TForm1.k(Sender: TObject);//凯撒解密
var
uncode,c:string;
tlength,i,iAsc:integer;
begin
c:=TrimRight(edit2.Text);
tlength:=length(c);
uncode:='';
for i:=1 to tlength do
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -