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

Access Discussion :

[Cryptage] Récupérer Date cryptée dans fichier text


Sujet :

Access

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 23
    Points : 16
    Points
    16
    Par défaut [Cryptage] Récupérer Date cryptée dans fichier text
    Bonjour,

    Merci d'avance à ceux qui pourront m'aider.

    J'utilise l'algorithme de cryptage XOR trouvé là : http://www.developpez.net/forums/sho...d.php?t=161273

    A l'aide de cet algorithme, je stocke plusieurs dates cryptées dans un fichier text avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        a.WriteLine "Liste des dates:"
        a.WriteLine XOREncrypt(#12/25/2005#, "111111")
        a.WriteLine XOREncrypt(#12/31/2005#, "111111")
        a.WriteLine XOREncrypt(#1/20/2006#, "111111")
    J'ai mis des dates en dur, mais à terme ce seront des dates ici d'une table.

    Jusque là, pas de problème, mes dates apparaissent bien cryptées dans le fichier text quand je vais voir dedans avec WordPad.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Liste des dates:
     
      
     
    Ensuite, j'essaie de récupérer ces dates en les décryptant depuis Access.
    J'utilise pour cela le code suivant :
    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
    Public Function FileRead2(ByVal strFile As String)
    Dim fso As Scripting.FileSystemObject
    Dim stm As Scripting.TextStream
     
    ' Créer une instance du FSO
    Set fso = New Scripting.FileSystemObject
     
    ' Ouvrir le fichier en écriture
    If Not fso.FileExists(strFile) Then
        MsgBox "Le fichier [" & strFile & "] n'existe pas !", vbExclamation
        Exit Function
    End If
    Set stm = fso.GetFile(strFile).OpenAsTextStream(ForReading)
     
    Dim strText As String 'variable dans laquelle je stocke la date cryptée (donc elle est en string)
    Dim DateText As Date 'variable dans laquelle je stocke la date décryptée
     
    'début de la lecture ligne par ligne
    Do While Not stm.AtEndOfStream
            stm.SkipLine 'je skip la ligne avec le titre
            strText = stm.ReadLine
            Debug.Print "Ligne numéro : " & stm.Line & " - " & strText
            Debug.Print "Date1 : " & CDate(XOREncrypt(strText, "111111"))
            DateText = CDate(XOREncrypt(strText, "111111"))
            If DateText > #1/1/2006# Then
            Debug.Print "Date1 est postérieure au 01/01/2006;"
            End If
     
            strText = stm.ReadLine
            Debug.Print "Ligne numéro : " & stm.Line & " - " & strText
            Debug.Print "Date2 : " & CDate(XOREncrypt(strText, "111111"))
            DateText = CDate(XOREncrypt(strText, "111111"))
            If DateText > #1/1/2006# Then
            Debug.Print "Date2 est postérieure au 01/01/2006;"
            End If
     
            strText = stm.ReadLine
            Debug.Print "Ligne numéro : " & stm.Line & " - " & strText
            Debug.Print "Date3 : " & CDate(XOREncrypt(strText, "111111"))
            DateText = CDate(XOREncrypt(strText, "111111"))
            If DateText > #1/1/2006# Then
            Debug.Print "Date3 est postérieure au 01/01/2006;"
            End If
     
    Loop
     
    ' Libérer les objets
    stm.Close
    Set stm = Nothing
    Set fso = Nothing
    J'ai mis plein de Debug.print pour essayer de bien suivre ce qui se passe.
    Ce qui apparaît au final est normal (voir pièce jointe, car le copier-coller ne passe pas).

    Voici mon souci :
    - c'est que j'ai des erreurs d'incompatibilité de type (erreur 13) à chaque ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateText = CDate(XOREncrypt(strText, "111111"))
    Et le plus étrange, c'est que le déboggeur se lance, la ligne est en jaune, et sans que je modifie quoique ce soit, si je refais Lecture, le programme lit correctement la ligne et passe à la suite comme si de rien était. Dans les options de VBE, j'ai pourtant bien coché l'option "Arrêt sur les erreurs non gérées".

    Au final, je ne sais pas si le problème vient de la fonction de cryptage, de problème au niveau des formats de date ou encore de la façon dont je lis le fichier text (je suis peu acoutumé des fichiers text).

    Désolé pour la longueur du message, mais j'essaie de vous donner un maximum d'éléments.

    Merci pour vos éclairages.
    Images attachées Images attachées  

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Essaye en mode pas à pas pour voir si le problème n'est pas dans la fonction de cryptage. Tu verras aussi ainsi si l'erreur est levée avant l'appel de la fonction, ou bien lors du retour du résultat.

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 23
    Points : 16
    Points
    16
    Par défaut Résolu
    Merci Tofalu,

    Le mode Pas à Pas m'a permis de voir que le problème venait de l'appel de la fonction XOREncrypt.

    strText vaut la date cryptée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Debug.Print "Date1 : " & CDate(XOREncrypt(strText, "111111"))
    DateText = CDate(XOREncrypt(strText, "111111"))
    A la deuxième ligne, strText ne vaut plus la date cryptée mais la date décryptée, ce qui provoque l'erreur lorsque j'essaie de convertir en date la date décryptée recryptée par l'appel de XOREncrypt.
    Et lorsque le déboggeur s'arrête dessus et que je relance, strText a repris la valeur d'origine ce qui fait que cette fois-ci cela passe.

    Je sais pas si c'est très clair, mais au final il suffit de mettre un BYVAL dans la function XOREncrypt pour éviter ce désagrément.

    Donc on dirait bien qu'un petit mot de 5 lettres a suffit à me faire perdre des heures!

    Encore merci. C'est résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/08/2016, 16h27
  2. Réponses: 4
    Dernier message: 15/11/2010, 10h32
  3. Récupérer donnée dans fichier texte
    Par all4linux dans le forum Web
    Réponses: 6
    Dernier message: 12/06/2010, 12h01
  4. Récupérer un bout de fichier texte dans une variable
    Par killerman31 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 15/01/2009, 12h03
  5. Insertion dans fichier texte + rapide que TStringList ?
    Par benj63 dans le forum C++Builder
    Réponses: 8
    Dernier message: 26/02/2004, 11h34

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