Crypter tout vos fichiers

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 217 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

cs_kanabis
Messages postés
59
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 juillet 2008
-
A koi correspond : LaphraseClef ?
Merci.
Glorkonline
Messages postés
42
Date d'inscription
samedi 24 mai 2003
Statut
Membre
Dernière intervention
1 janvier 2005
-
Eh ben, tu demande un phrase (ou un passe) à celui qui veut crypte/décrypter son fichier + le nom de son fichiers à crypter + le nom du fichier dans lequel le contenu crypté sera placé.
elguevel
Messages postés
735
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
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
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

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.