IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

TFile.Encrypt comment ça fonctionne


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 732
    Billets dans le blog
    65
    Par défaut TFile.Encrypt comment ça fonctionne
    Bonjour,

    je viens de voir que l'unité system.IOUTils permettait (sous windows) de chiffrer(Encrypt)/déchiffrer(Decrypt) des fichiers mais je n'arrive pas à en comprendre le fonctionnement.
    J'ai certainement fait une bêtise lors de mon premier test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure TForm6.BtnSaveClick(Sender: TObject);
    begin
    if OpenTextFileDialog1.execute then
      begin
        Memo1.Lines.SaveToFile(OpenTextFiledialog1.FileName);
        TFile.Encrypt(OpenTextFileDialog1.FileName);
      end;
    end;
    qui m'a bien ouvert un dialogue "une sorte de certificat" mais depuis je n'ai plus ce dernier et je pense n'avoir pas bien rempli ce dernier

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 141
    Par défaut
    SetUserFileEncryptionKey et QueryUsersOnEncryptedFile à voir si c'est encapsulé dans le TFile
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    TFile.Encrypt appelle la fonction de Windows...ni plus ni moins d'après ce que je vois
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 732
    Billets dans le blog
    65
    Par défaut
    Oui, c'est ce que j'ai vu, ce qui rend le jus de boudin encore moins clair ! (moi, tout ce qui est MS, j'y vais sur la pointe des pieds)

    Du coup, je me suis amusé avec TMS Cryptography Pack (version de démo) pour faire un truc plus "portable"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    uses   CryptBase, MiscObj, AESObj;
     
    procedure TForm6.btnLoadClick(Sender: TObject);
    var aStream : TmemoryStream;
        FStream : TFileStream;
        aEs : TAESEncryption;
    begin
    if OpenTextFileDialog1.execute then
      begin
        FStream:=TFileStream.Create(OpenTextFileDialog1.FileName,fmOpenRead);
        try
           FStream.Position:=0;
           aStream:=TmemoryStream.Create;
           try
             aes:= TAESEncryption.Create;
             try
               aes.AType:= atCBC;
               aes.KeyLength:= kl256;
               aes.Key:= '12345678901234567890123456789012';
               aes.OutputFormat:= hexa;
               aes.PaddingMode:= TpaddingMode.PKCS7;
               aes.IVMode:= TIVMode.rand;
               if aes.DecryptStream(FStream,aStream)=0 then
                   begin
                    aStream.Position:=0;
                    Memo1.Lines.LoadFromStream(aStream);
                   end
                   else memo1.Lines.Add('Raté');
             finally
               aes.Free;
             end;
           finally
             aStream.Free;
           end;
        finally
          FStream.Free;
        end;
      end;
    end;
     
    procedure TForm6.BtnSaveClick(Sender: TObject);
    var aEs : TAESEncryption;
        aStream : TMemoryStream;
        oStream : TFileStream;
    begin
    if OpenTextFileDialog1.execute then
      begin
       aStream:=TmemoryStream.Create;
       try
       Memo1.Lines.SaveToStream(aStream);
       aes:= TAESEncryption.Create;
       try
       aes.AType:= atCBC;
       aes.KeyLength:= kl256;
       aes.Key:= '12345678901234567890123456789012';
       aes.OutputFormat:=hexa;
       aes.Unicode:=yesUni;
       aes.PaddingMode:= TpaddingMode.PKCS7;
       aes.IVMode:= TIVMode.rand;
       oStream:=TFileStream.Create(OpentextFiledialog1.FileName,fmOpenwrite);
       try
        Aes.EncryptStream(aStream,oStream);
       finally
        oStream.Free;
       end;
       finally
         aes.Free;
       end;
       finally
        aStream.Free;
       end;
      end;
    end;
    Cela écrit, il doit y avoir d'autres packs.
    Par exemple : DEC que je vais essayer de ce pas

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 732
    Billets dans le blog
    65
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    uses
     
         DECCiphers, DECCipherBase;    // DEC
     
    procedure TForm6.btnLoadDecClick(Sender: TObject);
    var aStream : TmemoryStream;
        FStream : TFileStream;
        Cipher  : TCipher_AES;
    begin
    if OpenTextFileDialog1.execute then
      begin
        FStream:=TFileStream.Create(OpenTextFileDialog1.FileName,fmOpenRead);
        try
           FStream.Position:=0;
           aStream:=TmemoryStream.Create;
           try
             Cipher:= TCipher_AES.Create;
             try
              Cipher.Init(RawByteString('1234567890abcdef'));
              Cipher.Mode := cmCBCx;
              Cipher.DecodeStream(FStream,aStream,FStream.Size-2); // les char fin de fichier !? 
              aStream.Position:=0;
              Memo1.Lines.LoadFromStream(aStream);
             finally
               cipher.Free;
             end;
           finally
             aStream.Free;
           end;
        finally
          FStream.Free;
        end;
      end;
    end;
     
     
    procedure TForm6.btnSaveDECClick(Sender: TObject);
    var
        Cipher     : TCipher_AES;
        aStream, cStream  : TMemoryStream;
        Fstream : TFileStream;
        SL : TStringList;
    begin
    if OpenTextFileDialog1.execute then
      begin
       aStream:=TmemoryStream.Create;
       try
        Memo1.Lines.SaveToStream(aStream);
        aStream.Position:=0;
        cStream:=TmemoryStream.Create;
        try
           Cipher := TCipher_AES128.Create;
           try
             Cipher.Init(RawByteString('1234567890abcdef'));
             Cipher.Mode := cmCBCx;
             FStream:=TFileStream.Create(OpenTextFileDialog1.FileName,fmOpenReadWrite);
             try
              cipher.EncodeStream(aStream,FStream,astream.Size);
            finally
              Fstream.Free;
             end;
           finally
             Cipher.Free;
           end;
        finally
          cStream.Free;
        end;
       finally
         aStream.Free;
       end;
      end;
    end;
    Il y a juste cette histoire de fin de fichier qui me turlupine, à faire à la lecture comme dans mon code où dans la sauvegarde ?
    En tout cas pas mal ce DEC

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 141
    Par défaut
    Un padding multiple de 16o ?
    Donc tu auras autre chose avec un autre fichier si ça vient de ça
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Compilateur asm, comment ça fonctionne ?
    Par AsmCode dans le forum Assembleur
    Réponses: 21
    Dernier message: 30/07/2005, 00h59
  2. Comment faire fonctionner une scroll bar ???
    Par toto4650 dans le forum MFC
    Réponses: 10
    Dernier message: 18/07/2005, 17h47
  3. [JToolTip] comment ca fonctionne ?
    Par Terminator dans le forum Composants
    Réponses: 2
    Dernier message: 29/05/2005, 16h18
  4. [Chat] Comment faire fonctionner Flash 7 sous Debian ?
    Par piff62 dans le forum Evolutions du club
    Réponses: 22
    Dernier message: 07/03/2005, 16h27
  5. comment faire fonctionner l'exe sur une autre machine
    Par brian79 dans le forum C++Builder
    Réponses: 8
    Dernier message: 28/05/2004, 15h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo