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

Pascal Discussion :

Cryptage des fichiers binaires


Sujet :

Pascal

  1. #1
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut Cryptage des fichiers binaires
    Je developpe actuellement un ensemble de programme sur la cryptographie (rsa, xor, ...). Mais j' un probleme avec les fichiers binaires, pour les fichiers de type texte le cryptage s' effectue sans probleme. Peut etre parce que je lis les données sous formes de caracteres avant de les crypter.
    Je compte sur vous pour me proposer des methodes pour crypter des fichiers binaires.
    J' ecris les programmes avec turbo pascal 7.

  2. #2
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 845
    Points
    4 845
    Par défaut
    Si tu disais plutôt où tu butes, on pourrait plus t'aider.

    Il y'a pas mal de techniques recencées sur cette page :
    http://fr.wikipedia.org/wiki/Cryptographie

  3. #3
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    en fait pour les fichier où il n' y a que des suites de caracteres, je decrypte et decrypte le fichier sans problemes.
    Mais pour certain dossier .doc, .pdf par example, apres le cryptage , l' oparation inverse donne un fichier endomagé.

  4. #4
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Change tes chars par des bytes, ca devrait aider Et change ton fichier en file of byte
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  5. #5
    Inactif
    Inscrit en
    Février 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 46
    Points : 46
    Points
    46
    Par défaut Voici une petite idée !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function EnCryptDeCrypt(Param:String;Const Key:Word):String;
    var i,L:Word;
    begin L:=Length(Param);
        For i:=1 to L do
        Param[i]:=Chr( Ord(Param[i]) XOR ((L+Key)-I));
     EnCryptDeCrypt:=Param
    end;
    Pour un programme de test; essayer:
    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
     
    {$M 8024,0,655360}
    uses bsd_unit,bsd_Objects,bsd_strings,bsd_dlg;
    Var       Form1 :Forms;
        Info1,Info2,
        CryptingKey :TMaskEdit;
        EnCrypt,Clear,Browse,CryptFile
                    :Button;
             Labels :Array [0..4] Of TLabel;
           Progress1:TProgressBar;
     
     
    procedure EnCryptDeCryptBtn;
    begin
         Info2^.Text:=EnCryptDeCrypt(Info1^.Text,StrToInt(CryptingKey^.Text));
         Form1.UpDateEdit(Info2);
    end;
     
    procedure ClearBtn;
    begin
         Form1.ClearEdit(Info1);
         Form1.ClearEdit(Info2);
    end;
     
    procedure CallDlg;
    begin
         Form1.Form^.Status:=Browser(GetSelectedFile);
         Form1.UpdateStatus
    end;
     
    procedure CallCrp1;
    var       F1,
              F2:File Of Char;
               X:String;
              B : Char;
            i,L : Word;
    begin
      if not FileExists(Form1.Form^.Status) then
      MessageDlg('Erreur !',_CRLF_+_CRLF_+
      '‏ Erreur d''ouvٹrture du fichier !'+_CRLF_+
      'Nom du r‚pertoir ou du fichier incorrect, ou fichier in‚xistant.',mtError,'$OK$')
      else begin
         Assign(F1,Form1.Form^.Status);
         ReSet(F1);
         Assign(F2,GetActualDirectory+'New.CRP');
         ReWrite(F2);
         Progress1^.Pos:=0;
         Form1.UpdateProgressBar(Progress1);
         While Not Eof(F1) Do
         BEGIN
         if Progress1^.Pos<>(FilePos(F1)*100)Div FileSize(F1)
          then begin
         Progress1^.Pos:=(FilePos(F1)*100)Div FileSize(F1);
         Form1.UpdateProgressBar(Progress1);
               end;
         X:='';
         repeat
         Read(F1,B);
         X:=X+B;
         until (Length(X)=255)or(Eof(F1));
         L:=Length(X);
         X:=EnCryptDeCrypt(X,0);
         for i:=1 to L do Write(F2,X[i]);
         END;
         Close(F1);
         Close(F2);
         Progress1^.Pos:=100;
         Form1.UpdateProgressBar(Progress1);
         MessageDlg('Finished','OK',mtInformation,'');
           end
    end;
     
    procedure Form1_Obj;
    begin     With Form1 Do Begin
     InitProgressBar(Progress1,7,75,45,100,0,clWhite,clBlack,clWhRed,True,'All Progress:','%');
     NewButton(EnCrypt,48,74,27,27,True,clGray,clWhite,clBlack,True,'[C]rypter/DeCrypter',@EnCryptDeCryptBtn);
     
     NewButton(Clear,32,45,27,27,True,clGray,clWhite,clBlack,True,'[E]ffacer',@ClearBtn);
     
     NewButton(Browse,54,74,35,35,True,clGray,clWhite,clBlack,True,'[P]arcourir',@CallDlg);
     NewButton(CryptFile,52,76,38,38,True,clGray,clWhite,clBlack,True,'Crypter / DeCrypter',@CallCrp1);
     
     InitEdit(Info1,'#',8,74,10,14,clGray,clBlack,clWhite,clBlack,
              'Entrez Votre Text Ici..','‏ L''[i]nformation a traiter..',@Read_Edit);
     InitEdit(Info2,'#',8,74,19,23,clGray,clBlack,clWhite,clBlack,
              '','‏ Le [r]‚sultat de l''op‚ration..',@Read_Edit);
     InitEdit(CryptingKey,'9',13,20,30,30,clGray,clBlack,clWhite,clBlack,
              '5555555','',@Read_Edit);
     
     InitLabel(Labels[0],10,28,clWhite,clBlack,'‏ La Cl‚, ');
     InitLabel(Labels[1],5,34,clWhite,clBlack,'‏ Entrez Dans Les Zones De Saisies Et Faites, ');
     InitLabel(Labels[2],10,36,clWhite,clBlack,'‏ CTRL+C, Pour Copier ');
     InitLabel(Labels[3],10,37,clWhite,clBlack,'‏ CTRL+V, Pour Coller ');
     InitLabel(Labels[4],10,38,clWhite,clBlack,'‏ CTRL+X, Pour Couper ');
     MultiEvents:=True;
     EnableArrowKeys:=False;
              With Form^ Do Begin
              clFace       :=clGray;
              clTXT        :=clWhite;
              clBK         :=clRed;
              FillStyle    :=7;
              EnableStatus :=True;
        Caption            :=_TAB_+'‏ Le Cryptage..';
        About              :=_CRLF_+
                    'Exemple d''application pour Crypter les informations..,'+_CRLF_+_CRLF_+
                    'Pour plus d''information visitez :'+_CRLF_+_CRLF_+_CRLF_+_TAB_+HomePage+_CRLF_+_CRLF_+_TAB_+_TAB_+
                    '(C)2006 February.';
        Help               :=_CRLF_+
                    '‏ Exemple d''application,';
                            End
                            End
    end;
     
    begin
         Application.CreateForm(@Form1,@Form1_Obj);
         Application.Execute(@Form1);
    end.
    pour que vous puissier de compiler ce programme; télécharger les unités:
    http://www.geocities.com/bsdocuments...s/bsd_unit.zip
    pour d'autres programes de démonstration:
    http://www.geocities.com/bsdocuments...es/Doc_UPX.zip
    a+
    N'oublie pas ,
    au lieu de faire ou
    et efin !! sinon, en reste toujours ..

  6. #6
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Hio,

    Je n'ai pas lu ton code en détails, mais il appelle les mêmes réflexions que krachik t'a déjà faites dans un autre sujet.

    Il faut prendre le temps de présenter le code correctement, ça te sera utile aussi, et est indispensable quand on veut le montrer à d'autres personnes.

    - Indentation régulière et cohérente
    - Commentaires

    C'est une bonne habitude à prendre.

    Là, tu t'y retrouves parce que c'est un petit programme, mais essaye de maintenir ton "style" en écrivant des programmes un peu plus longs, et tu verras que tu éprouveras le besoin de maintenir également une mise en forme claire et lisible.
    Si les cons volaient, il ferait nuit à midi.

  7. #7
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    Merci pour ton poste. Mais j' avais deja resolu le probleme. Je cherchais à lire et à ecrire des caracteres dans unfichier binaire ouvert en lecture non en mode binaire. la consequence ne pouvait etre que desastreuse.
    Mais as tu archivé les unités .rar avant de les zipper ?. je n' ai pas un logiciel pour decompresser les .rar

  8. #8
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Luo,
    Citation Envoyé par darrylsite Voir le message
    Merci pour ton poste. Mais j' avais deja resolu le probleme. Je cherchais à lire et à ecrire des caracteres dans unfichier binaire ouvert en lecture non en mode binaire. la consequence ne pouvait etre que desastreuse.
    Mais as tu archivé les unités .rar avant de les zipper ?. je n' ai pas un logiciel pour decompresser les .rar
    7zip est gratuit et le fait très bien.
    Si les cons volaient, il ferait nuit à midi.

  9. #9
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 845
    Points
    4 845
    Par défaut
    ou unrar si tu es sous linux (il a l'avantage de ne nécessiter aucune installation).

Discussions similaires

  1. Manipuler des fichiers binaires en csharp
    Par olibara dans le forum C#
    Réponses: 5
    Dernier message: 04/04/2008, 14h07
  2. Regrouper des fichiers Binaire
    Par mboubidi dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 05/02/2008, 10h34
  3. Enregistrer des fichiers binaire
    Par arnaud036 dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 21/12/2007, 15h49
  4. comment lire des fichiers binaires
    Par compton dans le forum Autres Logiciels
    Réponses: 8
    Dernier message: 06/07/2006, 12h03
  5. [Postgres]comment inserer des fichier binaires ?
    Par amin001 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 24/12/2005, 01h40

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