Soms moet je gevoelige informatie opslaan en die wil je natuurlijk het liefste versleutelen (encryptie) zodat anderen deze info niet zo mara kunnen leen. Denk daarbij aan het opslaan van een wachtwoord in een config bestand, ini bestand of de Windows registry.
Gelukkig komt een handig hulpmiddel, "BlowFish" mee met Lazarus die dat allemaal snel en eenvoudig voor je kan doen.
In onderstaande voorbeelden heb ik twee eenvoudige functies gemaakt voor het versleutelen (encryptie) en ontsleutelen/ontcijferen.
Als eerste moet je BlowFish aan de Uses clausule toevoegen.
Uses BlowFish;
Met de volgende (voorbeeld) functies kun je dan eenvoudig strings versleutelen of ontcijferen, daarbij moet natuurlijk wel dezelfde key gebruikt worden voor beiden anders werkt het niet.
Je kunt ze eenvoudig aanroepen:
myencryptedstring:=EncryptString('Hallo'); // levert onleesbare tekst
mydecryptedstring:=Decrypt(myencryptedstring); // levert 'Hallo'
function TForm1.EncryptString(aString:string):string;
var Key:string;
EncrytpStream:TBlowFishEncryptStream;
StringStream:TStringStream;
EncryptedString:string;
begin
Key := 'mijn_geheime_encryptie_sleutel';
StringStream := TStringStream.Create('');
EncrytpStream := TBlowFishEncryptStream.Create(Key,StringStream);
EncrytpStream.WriteAnsiString(aString);
EncrytpStream.Free;
EncryptedString := StringStream.DataString;
StringStream.Free;
EncryptString := EncryptedString;
end;
...
function TForm1.DecryptString(aString:string):string;
var Key:string;
DecrytpStream:TBlowFishDeCryptStream;
StringStream:TStringStream;
DecryptedString:string;
begin
Key := 'mijn_geheime_encryptie_sleutel';
StringStream := TStringStream.Create(aString);
DecrytpStream := TBlowFishDeCryptStream.Create(Key,StringStream);
DecryptedString := DecrytpStream.ReadAnsiString;
DecrytpStream.Free;
StringStream.Free;
DecryptString := DecryptedString;
end;