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

VB.NET Discussion :

Raccourcir un code


Sujet :

VB.NET

  1. #1
    Invité
    Invité(e)
    Par défaut Raccourcir un code
    Bonjour à tous, je travail sur un système de décryptage et mon code est vraiment très long et répétitif :

    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
            For Index1 As Integer = 0 To Chars.Count - 1
                Dim Chaine1 As String = Chars(Index1).ToString
     
                If (MD5(Chaine1) = StrMD5) Then
                    FinalStr = Chaine1
                    Exit Sub
                End If
            Next
     
            For Index1 As Integer = 0 To Chars.Count - 1
                For Index2 As Integer = 0 To Chars.Count - 1
                    Dim Chaine2 As String = Chars(Index1).ToString & Chars(Index2).ToString
     
                    If (MD5(Chaine2) = StrMD5) Then
                        FinalStr = Chaine2
                        Exit Sub
                    End If
                Next
            Next
     
            For Index1 As Integer = 0 To Chars.Count - 1
                For Index2 As Integer = 0 To Chars.Count - 1
                    For Index3 As Integer = 0 To Chars.Count - 1
                        Dim Chaine3 As String = Chars(Index1).ToString & Chars(Index2).ToString & Chars(Index3).ToString
     
                        If (MD5(Chaine3) = StrMD5) Then
                            FinalStr = Chaine3
                            Exit Sub
                        End If
                    Next
                Next
            Next
     
            For Index1 As Integer = 0 To Chars.Count - 1
                For Index2 As Integer = 0 To Chars.Count - 1
                    For Index3 As Integer = 0 To Chars.Count - 1
                        For Index4 As Integer = 0 To Chars.Count - 1
                            Dim Chaine4 As String = Chars(Index1).ToString & Chars(Index2).ToString & Chars(Index3).ToString & Chars(Index4).ToString
     
                            If (MD5(Chaine4) = StrMD5) Then
                                FinalStr = Chaine4
                                Exit Sub
                            End If
                        Next
                    Next
                Next
            Next
     
            For Index1 As Integer = 0 To Chars.Count - 1
                For Index2 As Integer = 0 To Chars.Count - 1
                    For Index3 As Integer = 0 To Chars.Count - 1
                        For Index4 As Integer = 0 To Chars.Count - 1
                            For Index5 As Integer = 0 To Chars.Count - 1
                                Dim Chaine5 As String = Chars(Index1).ToString & Chars(Index2).ToString & Chars(Index3).ToString & Chars(Index4).ToString & Chars(Index5).ToString
     
                                If (MD5(Chaine5) = StrMD5) Then
                                    FinalStr = Chaine5
                                    Exit Sub
                                End If
                            Next
                        Next
                    Next
                Next
            Next
     
            For Index1 As Integer = 0 To Chars.Count - 1
                For Index2 As Integer = 0 To Chars.Count - 1
                    For Index3 As Integer = 0 To Chars.Count - 1
                        For Index4 As Integer = 0 To Chars.Count - 1
                            For Index5 As Integer = 0 To Chars.Count - 1
                                For Index6 As Integer = 0 To Chars.Count - 1
                                    Dim Chaine6 As String = Chars(Index1).ToString & Chars(Index2).ToString & Chars(Index3).ToString & Chars(Index4).ToString & Chars(Index5).ToString & Chars(Index6).ToString
     
                                    If (MD5(Chaine6) = StrMD5) Then
                                        FinalStr = Chaine6
                                        Exit Sub
                                    End If
                                Next
                            Next
                        Next
                    Next
                Next
            Next
    Savez-vous comment rétrécir (optimiser) ce code ?
    Voilà, merci beaucoup et bonne semaine

  2. #2
    Membre régulier
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2006
    Messages : 129
    Points : 106
    Points
    106
    Par défaut
    Tu as une limite sur le nombre de caractère de la chaine cryptée ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Je n'y avais pas pensé
    Disons que la limite est de 6 caractères

  4. #4
    Membre régulier
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2006
    Messages : 129
    Points : 106
    Points
    106
    Par défaut
    J'ai testé quelques codes, et j'ai a chaque fois bloqué le PC...

    En gros, il faut test...

    -a
    -aa
    -ab
    -ac

    Jusque là ça va. Par contre, il va falloir tester des truc comme

    -qskdjk

    Donc impossible de de faire boucler uniquement le dernier caractère, il faut que toutes les combinaisons y passe.

    Déjà, est-ce que ta fonction donne un résultat ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Oui oui, elle marche très bien

    J'ai testé des trucs plus complexe comme "zoro", mais au dessus de 4 caractères, ça prend beaucoup de temps ...

    Alors, des idées ?

  6. #6
    Membre régulier
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2006
    Messages : 129
    Points : 106
    Points
    106
    Par défaut
    C'est normal que plus ce soit un mdp long plus le décryptage est long. Si on pouvais casser les mdp en quelques micro-secondes ça ne serait pas sécurisé.

    D'autant que si on par du principe que l'utilisateur ne met que des lettres, le nombre max de test est de 26^n, n étant le nombre de lettre. Rajoute à ça les chiffres, les majuscules et les accents... Ça fait beaucoup plus.

    Raccourcir le code ne permettra pas forcément d'accélérer le traitement mais plutôt d'utiliser une fonction courte et récursive ce qui évitera de copier/coller autant de boucle imbriquées que de signes dans le mdp.

    Autre chose, généralement le md5 est utiliser avec une clé de hash. C'est une valeur définie par le codeur pour sécuriser encore plus. Ou certains voit simplement une fonction md5("le mot de passe"), il y a souvent md5("le mot de passe" & "la clé"), ce qui fait que sans connaître la clé, il est presque impossible de trouver le mdp. Et la clé est pas toujours derrière, elle peut même être aléatoire.

    Donc... Bonne chance. Je peux t'aider pour la fonction, mais le résultat est incertain.

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2012
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 9
    Points : 0
    Points
    0
    Par défaut
    Bonjour a toi,
    Pour l'optimisation de ton code je te conseil de te renseigner au niveau des foreach au lieu de for.
    Mais si a mon avis ta chaîne de caractère est l'alphabet (26 caractère) a la puissance le nombre de boucle (6) cela te fait déjà 308 915 776 possibilité donc je ne pense pas qu'en améliorant ton code, tu pourras réellement gagner du temps.
    cordialement, over

  8. #8
    Invité
    Invité(e)
    Par défaut
    Merci pour vos réponses
    Je me suis débrouillé tout seul :

    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
        Sub Cherche(ByVal StrMD5 As String, ByVal BoucleMax As Integer, ByVal BoucleActuel As Integer, ByVal StringActuel As String)
            For Index As Integer = 0 To Chars.Count - 1
                Dim Chaine As String = StringActuel & Chars(Index).ToString
     
                If (BoucleActuel = BoucleMax) Then
                    If (MD5(Chaine) = StrMD5) Then
                        FinalString = Chaine
                    End If
                Else
                    Cherche(StrMD5, BoucleMax, BoucleActuel + 1, Chaine)
                End If
            Next
        End Sub
     
        Sub Decrypter(ByVal StrMD5 As String)
            For Index As Integer = 0 To 6 - 1
                Cherche(StrMD5, Index, 0, String.Empty)
            Next
        End Sub

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

Discussions similaires

  1. Boucle pour raccourcir le code?
    Par jimmo dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 03/11/2014, 08h25
  2. [XL-2007] je voudrais raccourcir le code
    Par patricktoulon dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/11/2012, 20h04
  3. Raccourcir mon code
    Par UDSP50 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/01/2012, 13h32
  4. Raccourcir un code
    Par Didpa dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/06/2010, 15h24
  5. Raccourcir le code CSS (propriété font)
    Par khalidlyon dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 10/09/2009, 16h02

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