Voici deux fonctions qui permet de Crypter/Décrypter une Chaine ou un Fichier avec une Clé...
Source / Exemple :
unit Cryptage;
interface
uses Classes, SysUtils;
function Crypt(entree:AnsiString; cle:AnsiString):AnsiString;
function FileCrypt(Source : AnsiString; Destination : AnsiString; Cle : AnsiString):boolean;
implementation
function Crypt(entree:AnsiString; cle:AnsiString):AnsiString;
var
I,J,LongEntree,LongCle,VResult : integer;
VEntree,VCle : ^byte;
VBuffer: ^AnsiChar;
buffer : AnsiString;
begin
LongEntree := length(entree);
LongCle := length(Cle);
If (LongEntree > 0) and (LongCle > 0) then begin
setlength(buffer,LongEntree);
for I:= 1 to LongEntree do begin
for J := 1 to LongCle do begin
VEntree := @Entree[I];
VCle := @Cle[J];
VResult := VEntree^ xor VCle^;
VBuffer := @VResult;
Buffer[I] := VBuffer^;
end;
end;
end;
if Buffer <> '' then result := buffer else Result := '';
end;
function FileCrypt(Source : AnsiString; Destination : AnsiString; Cle : AnsiString):boolean;
var
FSource, Fdest :TFileStream;
Buffer: array[1..1024] of integer;
VCle : ^integer;
nblu : integer;
I,J, LongCle : integer;
begin
If (FileExists(Source)) and (Cle <> '') then begin
LongCle := Length(Cle);
try
FSource := TFileStream.Create(Source,fmOpenRead);
FDest := TFileStream.Create(Destination, fmCreate);
while FSource.Position < FSource.Size do begin
nblu := FSource.Read(Buffer, 1024);
For I:= 1 to nblu do begin
For J:= 1 to LongCle do begin
VCle := @Cle[J];
Buffer[I] := Buffer[I] xor VCle^;
end;
end;
FDest.Write(Buffer,nblu);
end;
Result := True;
finally
FSource.Free;
FDest.Free;
end;
end else Result := False;
end;
end.
Conclusion :
La deuxième version est là ^^
La première fonction permet de crypter une chaine quelque soit sa taille, ensuite la deuxième fonction permet de crypter un fichier.
Peut être une troisème version avec des commentaires, ca dépend si vous en avez besoin :p (ca prend du temp)
J' ai joint un fichier zip, dedans vous avez bien sur l' unité et en plus un petit programme qui l' utilise.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.