⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainuint.pas

📁 这是一个dephi开发的古典加密演示程序
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{************************************}
{*        古典加密技术的演示        *}
{*          作者:程  亮            *}
{*           信电工程系             *}
{*        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 + -