Cryptage / decryptage de fichiers par mot de passe

Soyez le premier à donner votre avis sur cette source.

Vue 35 786 fois - Téléchargée 3 362 fois

Description

Le projet est capable d'encrypter / decrypter un fichier à l'aide d'un mot de passe.
C'est trés simple à faire , en faite c'est du béhaba !
juste une dizaine de lignes pour crypter/decrypter un fichier avec mot de passe
L'utilisateur lance le projet et clique sur un des trois menus (crypter / decrypter / quitter).

ATTENTION ! Il est impossible de recupérer un mot de passe perdu.
Un conseil noter le mot de passe sur un bout de papier ou calepin.

Source / Exemple :


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  Tfprincipe = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    epwd: TEdit;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { DÚclarations privÚes }
  public
    { DÚclarations publiques }
    procedure gc(encrypter : boolean);
  end;

var
  fprincipe: Tfprincipe;

implementation

{$R *.DFM}

uses crypt;

procedure Tfprincipe.gc(encrypter : boolean);
var source,dest : pointer;
    f : file;
    size : longword;
    pwd : pchar;
    s : string[128];
begin
     if opendialog1.execute then begin
        savedialog1.filename := opendialog1.filename+'2';
        if savedialog1.execute then begin
        assignfile(f,opendialog1.filename);
        reset(f,1);
        size := filesize(f);
        source := nil;
        dest := nil;
        reallocmem(source,size);
        reallocmem(dest,size);
        blockread(f,source^,size);
        closefile(f);
        s := epwd.text+#0;
        pwd := @s;

        crypter(source,dest,size,pwd,encrypter);
        assignfile(f,savedialog1.filename);
        rewrite(f,1);
        blockwrite(f,dest^,size);
        closefile(f);
        end;

     end;
end;

procedure Tfprincipe.Button1Click(Sender: TObject);
begin
    gc(true);
end;

procedure Tfprincipe.Button2Click(Sender: TObject);
begin
    gc(false);
end;

procedure Tfprincipe.Button3Click(Sender: TObject);
begin
     application.terminate;
end;

end.

Conclusion :


Des pages seront mise en ligne sur le site http://sivallerstatic.no-ip.org et sivaller
prévoit la reouverture éventuelle du site http://sivaller.no-ip.org l'année prochaine

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

sebolofaly
Messages postés
6
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
8 février 2009
-
OU est le DLL?...peut-on mettrer un mot de passe sur un répertoire?
f0xi
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
26 -
Pour les gros fichier et a partir du moment ou on veut crypter et/ou compresser = TFileStream.

travailler en memoire ça bouffe trop de ressource et a 45-60Mo/s on ne voit pas la difference a moins d'avoir des DD en choux-fleurs.

en gros ça se passe comme ça :

flux disque source --> cryptage --> flux disque destination
idem pour le decryptage.


ensuite c'est bourrin de travailler encore avec AssignFile, reset et consort, LE PASCAL EST MORT! TFileStream !
JulioDelphi
Messages postés
2349
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
12 -
autant pour moi bidou.
sivaller, c'est la dll qui est interessante ici, pas une source qui l'utilise simplement. aurais tu la source de cett dll ?
cs_Bidou
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
42 -
JulioDelphi> Comment ça? Je ne suis pas l'auteur lol.
cs_Forman
Messages postés
663
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
6 avril 2010
1 -
Bon, je n'ai pas essayé le projet car je n'ai pas les sources de la DLL et je suis parano avec les virus. J'ai par contre lu le bout de code plus haut, et j'aurais quelques remarques:

* D'abord, utilisation de:
source:=nil;
reallocmem(source,size);
alors que la variable source n'est utilisée qu'une fois. Il est plus simple d'utiliser GetMem. Idem pour la variable dest. De plus, tu ne libères pas cette mémoire que tu as allouée.

* Ensuite, imagine que ton fichier fasse 1 gigaoctet. Tu écris:
size := filesize(f);
...
reallocmem(source,size);
L'utilisateur a intérêt à avoir beaucoup de RAM, pour allouer un bloc de 1 giga! ;-)
Il est préférable de découper le fichier en morceaux d'une taille plafonnée à quelques méga-octets (au maximum!), que tu cryptes séparément.

Serait-il possible d'avoir les sources de la DLL, ou au moins le nom et une description de la méthode de cryptage utilisée?

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.