Crypter tout vos fichiers

Contenu du snippet

Voici deux procedures qui permettent de crypter n'importe quel fichier (même les exe !). L'avantage est que la clef demandée à l'utilisateur peut être une String (pas comme dans le cryptage de fichier texte). La fonction StrToKey transforme cette string en longint (évidemment pas comme StrToInt ...).

Source / Exemple :


//La procedure qui crypte le fichier.

procedure FileCrypt(SourceFileName, DestFileName : String; CryptageKey : Longint; Crypt : Boolean);
type
 CryptOpt = record
  ExeSource : String;
  ExeDest : String;
  Key : Longint;
 end;
 CryptUtil = record
  BufOrds : Array[1..2048] of Longint;
  FromF, ToF : File;
  Buf : Array[1..2048] of Char;
  NumRead, NumWritten : Longint;
 end;
var
 CryptOpts : CryptOpt;
 CryptUtils : CryptUtil;
 I : Longint;
begin
 //D'abord, copier les infos vers les champs utilisés :
 CryptOpts.ExeSource := SourceFileName;
 CryptOpts.ExeDest := DestFileName;
 CryptOpts.Key := CryptageKey;
 //Ouvrons ensuite les variables FromF(fichier source) et
 //ToF(fichier destination)
 Assign(CryptUtils.FromF, CryptOpts.ExeSource);
 Reset(CryptUtils.FromF, 1);
 Assign(CryptUtils.ToF, CryptOpts.ExeDest);
 Rewrite(CryptUtils.ToF, 1);
 //Passons à la proc. de cryptage :
 Repeat
  BlockRead(CryptUtils.FromF, CryptUtils.Buf, SizeOf(CryptUtils.Buf), CryptUtils.NumRead);
  For i := 1 to 2048 do begin
   CryptUtils.BufOrds[i] := ord(CryptUtils.Buf[i]);
   If Crypt = True then CryptUtils.BufOrds[i] := CryptUtils.BufOrds[i] + CryptOpts.Key
   Else CryptUtils.BufOrds[i] := CryptUtils.BufOrds[i] - CryptOpts.Key;
   CryptOpts.Key := CryptOpts.Key + 1;
   CryptUtils.Buf[i] := chr(CryptUtils.BufOrds[i]);
  end;
  BlockWrite(CryptUtils.ToF, CryptUtils.Buf, CryptUtils.NumRead, CryptUtils.NumWritten);
 Until ((CryptUtils.NumRead = 0) or (CryptUtils.NumRead <> CryptUtils.NumWritten));
 //Et voilà ! Y'a plus qu'à fermer les variables (FromF et ToF)
 Close(CryptUtils.FromF);
 Close(CryptUtils.ToF);
end;

//La fonction qui transforme une string en clef (Longint).

function StrToKey(Str : String) : Longint;
var
 I, J : Longint;
begin
Result := 0;
For i := 1 to length(Str) do begin
J := ord(Str[i]);
Result := Result +  J;
end;
end;

//Utilisation :

//Pour crypter
FileCrypt(Lenomdufichiersource,Lenomdufichierdestination,StrToKey(LaphraseClef),True);

//pour décrypter
FileCrypt(Lenomdufichiersource,Lenomdufichierdestination,StrToKey(LaphraseClef),False);

Conclusion :


Glorkonline --- Glorkonline.be.tf --- Glorkonline@hotmail.com

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.