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

Macros et VBA Excel Discussion :

Petit problème de cryptage en vigenère [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de DenisHen
    Homme Profil pro
    Dessinateur / projeteur
    Inscrit en
    Novembre 2013
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Dessinateur / projeteur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2013
    Messages : 415
    Par défaut Petit problème de cryptage en vigenère
    Bonjour à tous,

    Voilà, j’essaie de crypter des données (une suite de textes, dates, temps... séparés par "#". NB : mes textes peuvent contenir des "retour chariot") contenu dans un fichier TXT en une seule ligne. Je lis donc le contenu de mon fichier avec un Je crypte mon fichier avec ce code trouvé sur le Net :
    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
    Public Function Crypt(ByVal strChaine As String, blnCryptage As Boolean) As String
    'Utilisation:
    '- Cryptage --> Crypt("Chaine a crypter", true)
    '- Decryptage -->Crypt("Chaine a decrypter", false)
        Dim I As Integer, J As Integer, K As Integer
        Dim strCryptKey As String, strLettre As String, strKeyLettre As String
        Dim intLettre As Long, intKeyLettre As Long, strResultat As String
     
        If strChaine = "" Then
            Crypt = ""
            Exit Function
        End If
     
        strCryptKey = "Clé secondaire de cryptage"
     
        For K = 0 To 10 Step 1
            strResultat = ""
     
            For I = 1 To Len(strChaine) Step 1
                strLettre = Mid(strChaine, I, 1)
                J = I
                Do While J > Len(strCryptKey)
                    J = J - Len(strCryptKey)
                Loop
                strKeyLettre = Mid(strCryptKey, J, 1)
                intLettre = Asc(strLettre)
                intKeyLettre = Asc(strKeyLettre)
     
                If blnCryptage = True Then
                    intLettre = intLettre + (intKeyLettre * Len(strChaine))
                Else
                    intLettre = intLettre - (intKeyLettre * Len(strChaine))
                End If
     
                Do While intLettre > 255
                    intLettre = intLettre - 255
                Loop
                Do While intLettre < 0
                    intLettre = intLettre + 255
                Loop
                strResultat = strResultat & Chr(intLettre)
            Next I
     
            strChaine = strResultat
        Next K
     
        Crypt = strResultat
    End Function
    Mais quand je relis ce fichier, avec un contenu crypté, je me suis aperçu qu'il contenait plusieurs lignes...

    Je ne peut plus le lire avec un "Line Input"... Le décryptage ne se fait pas correctement.

    Quelqu'un aurait-il une solution à mon problème ou, comment lire l'intégralité d'un fichier en une seule variable (chaine$) ?

    Bonne journée à tous...

    Denis...

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    dans l'exemple suivant, tu ouvre tout ton fichier en une seule action et tu place le resultat dans txt.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set FSO = CreateObject("Scripting.FileSystemObject")
    if  FSO.GetFile(Fichier).Size= 0 then exit sub
    Set oTxt = FSO.OpenTextFile(Fichier, 1)
    txt = oTxt.ReadAll
    oTxt.Close
    Set oTxt = Nothing
    set FSO =nothing

  3. #3
    Membre éclairé Avatar de DenisHen
    Homme Profil pro
    Dessinateur / projeteur
    Inscrit en
    Novembre 2013
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Dessinateur / projeteur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2013
    Messages : 415
    Par défaut
    Bonjour rdurupt et merci pour ta réponse,

    Le fichier se lit impeccablement bien... Mais il ne me le décrypte pas correctement. Je pense que je devrais utilisé "Scripting.FileSystemObject" pour écrire ce même fichier...

    Mais [F1] sur "FileSystemObject" ou sur "OpenTextFile" me donne dans les deux cas : "Mot clé introuvable, Office Shared [vblr6.chm1009553]".

    Pour écrire dans ce fichier text, puis-je faire çà ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                Set oTxt = oFso.OpenTextFile(fichier, 1)
                oTxt.Write="Texte à écrire"
                oTxt.Close
    Et encore merci de m'aider...

    Denis...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set NewFichier = fso.OpenTextFile(Fichier, 2, True)
    NewFichier.Write txt
    NewFichier.Close
    Set fso = nothing
    Set NewFichier = nothing
    ceci dit vérifies ta méthode de cryptage selon la taille du texte ça part en vrille il en existe de plus ou mois fiable!

  5. #5
    Membre éclairé Avatar de DenisHen
    Homme Profil pro
    Dessinateur / projeteur
    Inscrit en
    Novembre 2013
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Dessinateur / projeteur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2013
    Messages : 415
    Par défaut
    Merci rudupt pour ton aide, juste deux petites questions :

    -le "2" veux dire quoi ? c'est son emplacement mémoire ?

    - le "True" veut dire quoi ? Qu'il créé le fichier s'il n'existe pas ou l'écrase ou un truc dans ce genre ?

    Je n'ai pas trouvé de tuto ni de FAQ concernant ce sujet...

    Denis...

  6. #6
    Invité
    Invité(e)
    Par défaut
    le true force les drois!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set NewFichier = fso.OpenTextFile(Fichier, 1, True) 'Lecture
    Set NewFichier = fso.OpenTextFile(Fichier, 2, True) 'Création de fichier Creat
    Set NewFichier = fso.OpenTextFile(Fichier, 8, True) 'Ajouter du text dans un fichier existant Append
    https://msdn.microsoft.com/fr-fr/lib...(v=vs.71).aspx

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

Discussions similaires

  1. un petit problème d'algo
    Par supertramp dans le forum Algorithmes et structures de données
    Réponses: 22
    Dernier message: 12/10/2004, 20h13
  2. Petit problème de décimales !
    Par ridan dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/09/2004, 21h24
  3. Réponses: 17
    Dernier message: 13/07/2004, 20h37
  4. petit problème premier plan, arrière plan
    Par gros bob dans le forum OpenGL
    Réponses: 4
    Dernier message: 19/04/2004, 12h00
  5. [jointure] Petit problème sur le type de jointure...
    Par SteelBox dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/02/2004, 18h55

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