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

📄 unit1.pas

📁 用Delphi写的一个简单的加密解密算法
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,StrUtils, ComCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    JM: TButton;
    Edit2: TEdit;
    Label1: TLabel;
    Edit3: TEdit;
    Label2: TLabel;
    Edit4: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    UpDown1: TUpDown;
    UpDown2: TUpDown;
    procedure JMClick(Sender: TObject);
  private
    { Private declarations }

  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.JMClick(Sender: TObject);
var
  i,j,i_k:Integer;
  start,k : Integer;
  s0: String;
  s1:array[0..50] of String;
begin
  s0:=Edit1.Text;
  if s0=''then
  begin
    MessageBox(Handle,'密文为空。请重新输入!','警告',MB_OK);
    Edit1.SetFocus;Edit1.SelectAll;
    exit;
  end;
  if Pos(' ',s0)>0 then
  begin
    MessageBox(Handle,'密文中含有不正确的字符:空格。请重新输入!','警告',MB_OK);
    Edit1.SetFocus;Edit1.SelectAll;
    exit;
  end;
  j:=0;
  for i:=0 to length(s0) do
  begin
    if MidStr(s0,i,1)<>'' then j:=j+1;
  end;
  if j<length(s0) then
  begin
    MessageBox(Handle,'密文中含有不正确的字符:全角字符或中文。请重新输入!','警告',MB_OK);
    Edit1.SetFocus;Edit1.SelectAll;
    exit;
  end;

  start:=StrToInt(Edit3.Text);
  k:=StrToInt(Edit4.Text);

  j:=0;  
  i:=start;
  while i<=Length(s0) do /////////////////////////////
  begin                    //   在s0中,从第start个
    s1[j]:=MidStr(s0,i,1); //  字符开始,每隔 k 个字
    j:=j+1;                //  符取值,按顺序存储
    i:=i+k+1;             //
  end;                 ////////////////////////////

  i:=start+1;
  while i<=Length(s0) do   ////////////////////////////
  begin                    //
    if k>1 then             //         把从start开始的,
      for i_k:=0 to k-1 do ///
      begin                  ///////  每 k 个间隔 之间的
        if i+i_k>Length(s0) then
          break;
        s1[j]:=MidStr(s0,i+i_k,1); ///
        j:=j+1;            ///   字符取出来,按顺序
      end                   ////      存储,
    else if k=1 then                  /////
    begin                   /////
      s1[j]:=MidStr(s0,i,1); ////
      j:=j+1;            ////
    end;                 ////
    i:=i+k+1;            ////
  end;                    ////////////////////////////////

  i:=1;            ////////////////////////////////
  while i<start do //   把start以前的字符按原顺序存储
  begin             //////
    s1[j]:=MidStr(s0,i,1);
    j:=j+1;
    i:=i+1;
  end;             //////////////////////////////////

  edit2.Text:='';
  for i:=0 to Length(s0)-1 do   //显示加密后的字符串
  begin
    edit2.Text:=edit2.Text+s1[i];
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -