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

📄 unit1.pas

📁 著名的SecureBlackBox控件完整源码
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, SBPGP, SBPGPKeys, SBUtils, SBPGPUtils,
  SBPGPStreams, SBPGPConstants;

type
  TfrmMainForm = class(TForm)
    lbInputFileName: TLabel;
    editInputFile: TEdit;
    editOutputFile: TEdit;
    lbOutputFileName: TLabel;
    btnBrowseInputFile: TButton;
    btnBrowseOutputFile: TButton;
    btnEncrypt: TButton;
    btnClose: TButton;
    Bevel1: TBevel;
    dlgOpenDialog: TOpenDialog;
    pgpWriter: TElPGPWriter;
    lbPassphrase: TLabel;
    dlgSaveDialog: TSaveDialog;
    editPassphrase: TEdit;
    procedure btnCloseClick(Sender: TObject);
    procedure btnEncryptClick(Sender: TObject);
    procedure btnBrowseInputFileClick(Sender: TObject);
    procedure btnBrowseOutputFileClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure Encrypt(const strInputFilename : string;
      const strOutputFilename : string;  strPassphrase : string);
  end;

var
  frmMainForm: TfrmMainForm;

implementation

{$R *.dfm}

procedure TfrmMainForm.Encrypt(const strInputFilename : string;
  const strOutputFilename : string; strPassphrase : string);
var
  streamInput, streamOutput: TFileStream;
begin
  pgpWriter.Armor := true;
  pgpWriter.ArmorHeaders.Clear();
  pgpWriter.ArmorHeaders.Add('Version: EldoS OpenPGPBlackbox');
  pgpWriter.ArmorBoundary := 'PGP MESSAGE';
  pgpWriter.EncryptionType := etPassphrase;
  pgpWriter.Passphrases.Add(strPassphrase);
  pgpWriter.Filename := ExtractFileName(strInputFilename);
  pgpWriter.Timestamp := Now;
  // creating filestream for reading from input file
  streamInput := TFileStream.Create(strInputFilename, fmOpenRead);
  try
    // create filestream for writing encrypted file
    streamOutput := TFileStream.Create(strOutputFilename, fmCreate);
    try
      pgpWriter.Encrypt(streamInput, streamOutput, 0)
    finally
      streamOutput.Free;
    end;
  finally
    streamInput.Free;
  end;
  MessageDlg('The file was encrypted successfully', mtInformation, [mbOk], 0);
  Close;
end;

procedure TfrmMainForm.btnCloseClick(Sender: TObject);
begin
  Close;
end;

procedure TfrmMainForm.btnEncryptClick(Sender: TObject);
begin
  if not FileExists(editInputFile.Text) then
    MessageDlg('Source file not found', mtError, [mbOk], 0)
    else if editPassphrase.Text = '' then
      MessageDlg('Please, enter passphrase', mtError, [mbOk], 0)
  else
    Encrypt(editInputFile.Text, editOutputFile.Text, editPassphrase.Text);
end;

procedure TfrmMainForm.btnBrowseInputFileClick(Sender: TObject);
begin
  dlgOpenDialog.Filter := '';
  dlgOpenDialog.Title := 'Please, select file';
  if dlgOpenDialog.Execute then
  begin
    editInputFile.Text := dlgOpenDialog.FileName;
    editOutputFile.Text := editInputFile.Text + '.pgp';
  end;
end;

procedure TfrmMainForm.btnBrowseOutputFileClick(Sender: TObject);
begin
  dlgSaveDialog.Filter := '';
  dlgSaveDialog.Title := 'Please, select file';
  if dlgSaveDialog.Execute then
    editOutputFile.Text := dlgSaveDialog.FileName;
end;

initialization
SetLicenseKey('ADDCD14AD06709806817E0B3D7BFD0A2222D536FE156466C5D5FE65DB5DEAE76' + 
  'FFDEBC07E915A5751C12C01C783958872A38E4A5EDA140E7247E0F2E56442A3C' + 
  'F3E9347AD8FDE52083A0DFC86BC00ECB0FD0CF1B51159A2BCB84F6EA6349EF47' + 
  '5C15A59AFCC55F7C3AAD26C279628B5D91B1DC94BD2385354A70CCA3B76101D9' + 
  'F41C84A639FC3CCE4BA8F0CC4A66DCD150114A3F58C1AD46B7B94643741BC20A' + 
  '8DCA83AB921480951B423CAA19EF1863A47CA2C3422E7E5634BED98939A5AE43' + 
  'DE1E4BAD79E66D8A5C973B3455656C8C9B6FF024FADD6CDA02D0F506D98493C8' + 
  'BD1ED7B237DB75FA31F2C82654490CDDDEE24E19939137B9E1DB05508733B22F');

end.

⌨️ 快捷键说明

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