Soyez le premier à donner votre avis sur cette source.
Vue 16 139 fois - Téléchargée 1 243 fois
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.
10 févr. 2007 à 18:15
VCle := @Cle[J];
je t'invite à regarder de nouveau ce passage :)
En fait cela crypte entierement le texte par le premier caractère de la clé, puis le deuxième, puis le troisième... jusqu' au dernier.
3 oct. 2005 à 11:31
Tu fait un boucle qui parcoure ta chaine jusque la ok, par contre après tu fait une boucle qui parcour ta clé, tu fait un Xor du caractère de ton buffer lu, par le caractère de la clé lu, et après tu incremente la position de ta clé sans incrementé celui de ton buffer.
En un mot quelque soit la clé que tu mette, seul le dernier caractère va crypter ta chaine.
Si ton champs source est : "ceci est un test de cryptage" et que ta clé est "MACLE" alors seul le E va compter, si tu met comme clé "XXE" çà fera pareil normalement !
Cordialement.
Damien
11 nov. 2004 à 13:31
20 août 2004 à 14:29
Je ne peux pas la tester encore malheureusement car j'ai pu mon pc jusqu'à fin août (36 15 Ma vie).
Mais sache que je te filerai un commentaire dès mon retour à la maison.
Inekman.
17 août 2004 à 00:21
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.