Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CRYPTAGE / DECRYPTAGE DE FICHIERS PAR MOT DE PASSE


Information sur la source

Description

Cliquez pour voir la capture en taille normale
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

  • 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.
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
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de CptPingu le 27/08/2006 19:58:17

Tout d'abord on dit "Cryptage/Decryptage" et pas cryptation...

Ensuite, ton code se limite à utiliser une DLL dont on n'a pas la source. Ici c'est un site de partage, si tu ne donne pas la source, alors ca n'a absolument aucun interet.

Peut etre la source de la dll sera interessante (Cryptage de Vernam ? Peut etre une autre methode que celle proposé par JulioDelphi), mais pour l'instant la source du projet qui l'utilise n'est pas très utile.

Je ne note pas, j'attends la mise à jour pour donner mon avis.

signaler à un administrateur
Commentaire de Bidou le 27/08/2006 20:08:33 administrateur CS

J'ai renommé la source ;-)

signaler à un administrateur
Commentaire de Delphiprog le 27/08/2006 22:18:39 administrateur CS

Tout à fait d'accord avec toi CptPingu, en l'absence du code de la dll, aucun intérêt à ce code.
De plus, pourquoi déclarer cci_crypt dans la partie interface de l'unité crypt.pas puisque la fonction crypter est censée en faciliter l'usage ?

signaler à un administrateur
Commentaire de Forman le 28/08/2006 13:21:02

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?

signaler à un administrateur
Commentaire de JulioDelphi le 29/08/2006 09:24:14 administrateur CS

Je vais même dire que sans la source de cette DLL, cette source ne survis pas.
@CptPingu: http://www.delphifr.com/codes/COMPOSANT-TDBPVERNAM-CRYPTEUR-TEXTE-FICHIER_28108.aspx
j'avais mis en composant une source de mauricio, lui meme tiré d'une source ^^
Bidou, donne nous vite la source de la dll, ils sont tous impatients là ;D

signaler à un administrateur
Commentaire de Bidou le 29/08/2006 09:37:21 administrateur CS

JulioDelphi> Comment ça? Je ne suis pas l'auteur lol.

signaler à un administrateur
Commentaire de JulioDelphi le 29/08/2006 10:18:13 administrateur CS

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 ?

signaler à un administrateur
Commentaire de f0xi le 30/08/2006 02:47:36 administrateur CS

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 !




signaler à un administrateur
Commentaire de sebolofaly le 05/03/2008 19:17:24

OU est le DLL?...peut-on mettrer un mot de passe sur un répertoire?

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Décrypter un fichier ZIP [ par kelian ] Salut salut donc mon probleme est un fichier crypter et ziper et il y a un pass donc ma question qui va etre stupide pour certain est commen décr Erreur de sécurité .net [ par grumli ] Bonjour, le lancement de mon appli génére deux erreurs, la première "Echec de la demande pour une autorisation de type System.Securit Petits soucis de sécurité avec outlook [ par tititon ] Bonjour à tous,Je souhaiterais éviter que le message de sécurité outlook n'apparaisse lorsque l'on tente d'accèder à out Fichier, Sécurité NTFS et Delphi [ par peanuts59 ] bonjour, Je suis admin donc no problem pour accéder à mes fichiers. Etant en NTFS, j'ai donc l'onglet sécurité activé. J'aime retirer le périphérique en tout sécurité [ par sachet ] Bonjour,je recherche un commande API permettant de déconnecter un périphérique de masse USB. Idéalement, j'aimerais pouvoir ouvrir Rassemblement de fichier et sécurité [ par Don0Choa ] Bonjour, je suis en train de faire un programme qui rassemble tous les fuchiers et dossiers que l'on veut en un seul. Ce fichier (Source.alb) contient Protection D'une Application [ par Rudy3212 ] Best PigVoila j'aimerai savoir comment protégé une application contre la modification.Il existe une technique c'est d'inclure le crc de l'ap Question URGENTE, merci de m'aider [ par Hamhama007 ] BonjourJe voulai d'abors vous dire que je ne connai rien en Delphi et tous ce qui est programmation...En recherchant une fois su Erreur de protection... [ par BernardLimont ] Bonjour,Quand on grave un CD (avec Néro par exemple), on a le message "Erreur de protection contre les ruptures activées".Que signifie cette phrase ? Protection et compression [ par ytillang30400 ] Bonjour.Devant l'abondance d'outils proposés pour protéger les applications, il est difficile de faire un choix. J'ai entendu parler de "Citadel par B


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.