Lazarus e la crittografia

Chi necessita di lavorare con la crittografia troverą in Lazarus un valido alleato perchč esiste un componente chiamato DCPCrypt (http://wiki.lazarus.freepascal.org/DCPcrypt) che permette di lavorare con i pił diffusi algoritmi di crittografia.
Vediamo ora un esempio per capire come si usa.

Codice: [Seleziona]

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  DCPdes, DCPrc4, DCPsha1;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    DCP_rc4_1: TDCP_rc4;
    DCP_sha1_1: TDCP_sha1;
    Label1: TLabel;
    Label2: TLabel;
    Lbl_Algoritmo: TLabel;
    Txt_In: TEdit;
    Txt_Out: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

{procedura che cifra una stringa}
procedure TForm1.Button1Click(Sender: TObject);
var
    i: integer;
    Cipher: TDCP_rc4;
    KeyStr: string;
begin
    KeyStr:= '';
    if InputQuery('Passphrase','Inserisci la passphrase',KeyStr) then  // richiedo la passphrase per cifrare la stringa
    begin
      Cipher:= TDCP_rc4.Create(Self);
      Cipher.InitStr(KeyStr,TDCP_sha1);         // inizializzare il cifrario con un hash della password
      Txt_Out.Text := Cipher.EncryptString(Txt_In.Text); //cifro il testo contenuto nella TEdit di nome Txt_In e metto il risultato nella TEdit Txt_Out
      Lbl_Algoritmo.Caption:= Cipher.GetAlgorithm; //visualizzo quale algoritmo ho usato in una TLabel di nome Lbl_Algoritmo
      Cipher.Burn;
      Cipher.Free;
    end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
    i: integer;
    Cipher: TDCP_rc4;
    KeyStr: string;
begin
    KeyStr:= '';
    if InputQuery('Passphrase','Inserisci la passphrase',KeyStr) then  // richiedo la passphrase per cifrare la stringa
    begin
      Cipher:= TDCP_rc4.Create(Self);
      Cipher.InitStr(KeyStr,TDCP_sha1);         // inizializzare il cifrario con un hash della password
      Txt_Out.Text := Cipher.DecryptString(Txt_In.Text); //decifro il testo contenuto nella TEdit di nome Txt_In e metto il risultato nella TEdit Txt_Out
      Lbl_Algoritmo.Caption:= Cipher.GetAlgorithm; //visualizzo quale algoritmo ho usato in una label di nome Lbl_Algoritmo
      Cipher.Burn;
      Cipher.Free;
    end;
end;

end.


Potete trovare l'esempio appena visto all'indirizzo: www.lazaruspascal.it/esempi/Cifratore.zip

SMF 2.0.8 | SMF © 2011, Simple Machines
Privacy Policy
SMFAds for Free Forums
TinyPortal © 2005-2012

Go back to article