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

📄 rsa.pas

📁 FIR引擎最新源码+注册
💻 PAS
字号:
unit RSA;
interface
const
  ItemMaxLen = 64;
type
  TInt64Item = record
    Length: Integer; //0x00
    Items: array[0..ItemMaxLen] of Int64;
  end;
  TChItem = array[0..ItemMaxLen] of Char;

procedure RSAEncode(Src: TChItem; len: Integer; var Des: TInt64Item; E: Int64; n: Int64);
procedure RSADecode(Src: TInt64Item; var Des: TChItem; D: Int64; n: Int64);
procedure XORCode(XORMode: Char; Src: PChar; var Des: TChItem; len: Integer);


implementation
function PowMod(base: Int64; pow: Int64; n: Int64): Int64;
var
  A, b, c: Int64;
begin
  A := base;
  b := pow;
  c := 1;
  while (b > 0) do begin
    while (not ((b and 1) > 0)) do begin
      b := b shr 1;
      A := A * A mod n;
    end;
    Dec(b);
    c := A * c mod n;
  end;
  Result := c;
end;

procedure RSAEncode(Src: TChItem; len: Integer; var Des: TInt64Item; E: Int64; n: Int64);
var
  I: Integer;
begin
  Des.Length := len;
  for I := 0 to len - 1 do begin
    Des.Items[I] := PowMod(Int64(Src[I]), E, n);
  end;
end;

procedure RSADecode(Src: TInt64Item; var Des: TChItem; D: Int64; n: Int64);
var
  I, A: Integer;
begin
  FillChar(Des, ItemMaxLen, 0);
  for I := 0 to Src.Length - 1 do begin
    A := PowMod(Src.Items[I], D, n);
    Des[I] := Char(A);
  end;
end;

procedure XORCode(XORMode: Char; Src: PChar; var Des: TChItem; len: Integer);
var
  I: Integer;
begin
  FillChar(Des, ItemMaxLen, 0);
  for I := 0 to len - 1 do begin
    Des[I] := Char(Integer(Src[I]) xor Integer(XORMode));
  end;
end;

end.

⌨️ 快捷键说明

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