Crypter tout vos fichiers

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 280 fois - Téléchargée 30 fois

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

Ajouter un commentaire

Commentaires

benabdessamed
Messages postés
52
Date d'inscription
jeudi 29 novembre 2007
Statut
Membre
Dernière intervention
26 septembre 2012

j'ai pas fermer le fichier et c'est tous
benabdessamed
Messages postés
52
Date d'inscription
jeudi 29 novembre 2007
Statut
Membre
Dernière intervention
26 septembre 2012

j'ai oublier de fermer le fichier
benabdessamed
Messages postés
52
Date d'inscription
jeudi 29 novembre 2007
Statut
Membre
Dernière intervention
26 septembre 2012

bonjour,
j'ai un probleme avec ce source, lorsque je fait un deuxieme appelle
,il plante avec le message erreur : "E/S 32"
qq, sait pourquoi j'ai cette erreur
merci à l'avence
elguevel
Messages postés
718
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2016
3
J'ai juste vu ta fonction là ... et été t-il necessaire de faire 2 records dans ta fonctions ? (CryptOpt et CryptUtil)

Et tu as mis ta source en initié... j'ai été deçu de voir que tu n'as fait qu'un ROT (cryptage de cesars).

Mais bon c'est pas mal quand meme.

Damien

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.