Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.

Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.


Introduzione
Ci sono molte scuole, teorie ed applicazioni sulla cifratura. In questo breve tutorial verrā affrontata la cifratura a chiave simmetrica in quanto č quella che di solito copre tutte le necessitā di crittografia di chi scrive programma ma ha necessitā di nascondere dati importanti come password. Tra gli algoritmi a chiave simmetrica, BlowFish č un algoritmo libero da brevetti e, manco a dirlo, ha la sua implementazione in free pascal.

Installazione
Non c'č bisogno di installare nulla! Basta un semplice:
Codice: [Seleziona]
uses blowfish;

e siamo pronti all'uso.


La cifratura
Bisogna usare la classe TBlowFishEncryptStream.
Questa classe mette a disposizione 2 costruttori:
1) Constructor Create(AKey : TBlowFishKey; AKeySize : Byte; Dest: TStream);
2) Constructor Create(Const KeyPhrase : String; Dest: TStream);

Il primo costruttore si aspetta come parametro per la chiave una variabile di tipo TBlowFishKey (array di 56 byte).
Il secondo costruttore si aspetta invece, per la chiave, un parametro di tipo stringa.

Segue un esempio:

Codice: [Seleziona]
function ...
var Inp, Outp, EC: TStream;
begin
...
    // stream input
    Inp := TStringStream.Create('valore chiave per cifratura');
    // stream output
    Outp := TStringStream.Create('');
    // stream per cifratura
    EC := TBlowFishEncryptStream.Create(Key, Outp);
    // esegue la cifratura
    EC.CopyFrom(Inp, Inp.Size);
    // lettura testo cifrato
    result := TStringStream(Outp).DataString;
...
end;


Decifrare
Questa volta la classe interessata č TBlowFishDeCryptStream e fornisce sempre i 2 costruttori come il caso sopra.

Segue un esempio:

Codice: [Seleziona]
function ...
var Inp, Outp, EC: TStream;
begin
...
    // crea stream input cifrato
    Inp := TStringStream.Create("testo cifrato da decifrare");
    // crea stream out vuoto
    Outp := TStringStream.Create('');
    // crea stream per decifratura + decifra
    EC := TBlowFishDeCryptStream.Create(Key, Inp);
    // legge testo in chiaro
    Outp.CopyFrom(EC, Inp.Size);
    // restituisce testo in chiaro
    result  := TStringStream(Outp).DataString;
...
end;




Segue link ad un thread dove č possibile scaricare un esempio funzionante
http://www.lazaruspascal.it/index.php?topic=2374.msg14884;topicseen#new


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

Go back to article