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

📄 unit1.pas

📁 使用DELPHI实现的 base64 加解密的算法代码
💻 PAS
字号:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  function Base64Encode(const s: string): string;
  function Base64Decode(const s: string): string;
implementation

{$R *.dfm}

function Base64Encode(const s: string): string;
var
  i,c1,c2,c3: Integer;
  m,n: Integer;
const
  Base64: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
begin
  Result := '';
  m:=1;
  n:=0;
  for i := 1 to (Length(s) div 3) do
  begin
    c1 := Ord(s[m]);
    c2 := Ord(s[m+1]);
    c3 := Ord(s[m+2]);
    m:=m+3;
    Result := Result+base64[(c1 shr 2)and $3F+1];
    Result := Result+base64[((c1 shl 4)and $30) or ((c2 shr 4)and $0F)+1];
    Result := Result+base64[((c2 shl 2)and $3C) or ((c3 shr 6)and $03)+1];
    Result := Result+base64[c3 and $3F+1];
    n:=n+4;
    if(n = 76)then
    begin
       n:=0;
       Result := Result+#13#10;
    end;
  end;
  if (Length(s) mod 3)=1 then
  begin
    c1 := Ord(s[m]);
    Result := Result+base64[(c1 shr 2)and $3F+1];
    Result := Result+base64[(c1 shl 4)and $30+1];
    Result := Result+'=';
    Result := Result+'=';
  end;
  if (Length(s) mod 3)=2 then
  begin
    c1 := Ord(s[m]);
    c2 := Ord(s[m+1]);
    Result := Result+ base64[(c1 shr 2)and $3F+1];
    Result := Result+ base64[((c1 shl 4)and $30) or ((c2 shr 4)and $0F)+1];
    Result := Result+base64[(c2 shl 2)and $3C+1];
    Result := Result+ '=';
  end;
end;

function Base64Decode(const s: string): string;
var
  i,m,n: Integer;
  c1,c2,c3,c4: Integer;
const
  Base64: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
begin
  Result := '';
  n:=1;
  m:=Length(s);
  if s[m]='='then m:=m-1;
  if s[m]='='then m:=m-1;
  for i:=1 to m div 4 do
  begin
    c1:=Pos(s[n],Base64)-1;
    c2:=Pos(s[n+1],Base64)-1;
    c3:=Pos(s[n+2],Base64)-1;
    c4:=Pos(s[n+3],Base64)-1;
    n:=n+4;
    Result:=Result+Chr(((c1 shl 2)and $FC)or((c2 shr 4)and $3));
    Result:=Result+Chr(((c2 shl 4)and $F0)or((c3 shr 2)and $0F));
    Result:=Result+Chr(((c3 shl 6)and $C0)or c4);
  end;
  if m mod 4=2 then
  begin
    c1:=Pos(s[n],Base64)-1;
    c2:=Pos(s[n+1],Base64)-1;
    Result:=Result+Chr(((c1 shl 2)and $FC)or((c2 shr 4)and $3));
  end;

  if m mod 4=3 then
  begin
    c1:=Pos(s[n],Base64)-1;
    c2:=Pos(s[n+1],Base64)-1;
    c3:=Pos(s[n+2],Base64)-1;
    Result:=Result+Chr(((c1 shl 2)and $FC)or((c2 shr 4)and $3));
    Result:=Result+Chr(((c2 shl 4)and $F0)or((c3 shr 2)and $0F));
  end;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit2.Text :=Base64Encode(Edit1.Text);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Edit1.Text :=Base64Decode(Edit2.Text);
end;

end.

⌨️ 快捷键说明

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