Unité de cryptage/décryptage par xor.

Description

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.

Codes Sources

A voir également

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.