Cryptage / decryptage de fichiers par mot de passe

Soyez le premier à donner votre avis sur cette source.

Vue 37 621 fois - Téléchargée 3 675 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
5 mars 2008 à 19:17
OU est le DLL?...peut-on mettrer un mot de passe sur un répertoire?
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 37
30 août 2006 à 02:47
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 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
29 août 2006 à 10:18
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 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
29 août 2006 à 09:37
JulioDelphi> Comment ça? Je ne suis pas l'auteur lol.
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
28 août 2006 à 13:21
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.