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

📄 form.pas

📁 Delphi与.NET RSA的互操作
💻 PAS
字号:
unit Form;

interface

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

type
  TMainForm = class(TForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    tb_key_Modulus: TEdit;
    but_createkey: TButton;
    tb_key_Exponent: TEdit;
    tb_key_P: TEdit;
    tb_key_Q: TEdit;
    tb_key_DP: TEdit;
    tb_key_DQ: TEdit;
    tb_key_InverseQ: TEdit;
    tb_key_D: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    GroupBox2: TGroupBox;
    Label9: TLabel;
    Label10: TLabel;
    but_encrypt: TButton;
    but_decrypt: TButton;
    but_clear: TButton;
    memo_text: TMemo;
    memo_textencry: TMemo;
    XPManifest1: TXPManifest;
    procedure but_createkeyClick(Sender: TObject);
    procedure but_encryptClick(Sender: TObject);
    procedure but_decryptClick(Sender: TObject);
    procedure but_clearClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  MainForm: TMainForm;

implementation

{$R *.dfm}

procedure CreateKey(b:integer; Modulus:AnsiString; Exponent:AnsiString; P:AnsiString; Q:AnsiString; DP:AnsiString; DQ:AnsiString; InverseQ:AnsiString; D:AnsiString);stdcall;
external 'RSAKey.dll';

procedure TMainForm.but_createkeyClick(Sender: TObject);
var
  m,e,p,q,dp,dq,inverseq,d:AnsiString;
begin
SetLength(m, 1024);
SetLength(e, 1024);
SetLength(p, 1024);
SetLength(q, 1024);
SetLength(dp, 1024);
SetLength(dq, 1024);
SetLength(inverseq, 1024);
SetLength(d, 1024);

CreateKey(1024,m,e,p,q,dp,dq,inverseq,d);

tb_key_Modulus.Text := m;
tb_key_Exponent.Text := e;
tb_key_P.Text := p;
tb_key_Q.Text := q;
tb_key_DP.Text := dp;
tb_key_DQ.Text := dq;
tb_key_InverseQ.Text := inverseq;
tb_key_D.Text := d;

end;

function Cmip_Encrypt(text:ansistring; exp:ansistring; module:ansistring):PChar;stdcall;
external 'cmipcrypt.dll';
function Cmip_Decrypt(etext:ansistring; d:ansistring; module:ansistring):PChar;stdcall;
external 'cmipcrypt.dll';

procedure TMainForm.but_encryptClick(Sender: TObject);
var
  text,exp,module:string;
begin
//加密
text := memo_text.Text;
exp := tb_key_Exponent.Text;
module := tb_key_Modulus.Text;

memo_textencry.Text := Cmip_Encrypt(text,exp,module);
end;

procedure TMainForm.but_decryptClick(Sender: TObject);
var
  etext,d,module:string;
begin
//解密
etext := memo_textencry.Text;
d := tb_key_D.Text;
module := tb_key_Modulus.Text;

memo_text.Text := Cmip_Decrypt(etext,d,module);
end;

procedure TMainForm.but_clearClick(Sender: TObject);
begin
//清除
memo_text.Text := '';
memo_textencry.Text := '';
end;

end.

⌨️ 快捷键说明

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