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 6 et antérieur Discussion :

algorithme de décryptage


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Par défaut algorithme de décryptage
    Salut à tous, voila je travaille dans une société qui utilise un programme écrit en vb6 pour décrypter des information, est ce que quelqu'un peut me dire le type d'algorithme utilisé
    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
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
     
    'CIPHER.CLS
    Option Explicit
     
    Private msKeyString As String
    Private msText As String
     
    '~~~.KeyString
    'Une chaîne (clé) utilisée dans l'encryptage et le décryptage
    Public Property Let KeyString(sKeyString As String)
        msKeyString = sKeyString
        'Initialize
    End Property
     
    '~~~.Text
    'Ecrit le texte à encrypter ou décrypter
    Public Property Let Text(sText As String)
        msText = sText
    End Property
     
    'Lit le texte qui a été encrypté ou décrypté
    Public Property Get Text() As String
        Text = msText
    End Property
     
    '~~~.DoXor
    'Méthode d'encryptage ou de décryptage par ou exclusif
    Public Sub DoXor()
        Dim nC As Integer
        Dim nB As Integer
        Dim lI As Long
        lI = 1
        For lI = 1 To Len(msText)
            nC = Asc(Mid(msText, lI, 1))
            nB = Int(Rnd * 256)
            Mid(msText, lI, 1) = Chr(nC Xor nB)
        Next lI
        'MsgBox msText
    End Sub
     
    '~~~.Stretch (extension)
    'Conversion de n'importe quelle chaîne en chaîne imprimable
    'et visualisable
    Public Sub Stretch()
        Dim nC As Integer
        Dim lI As Long
        Dim lJ As Long
        Dim nK As Integer
        Dim lA As Long
        Dim sB As String
        lA = Len(msText)
        sB = Space(lA + (lA + 2) \ 3)
        For lI = 1 To lA
            nC = Asc(Mid(msText, lI, 1))
            lJ = lJ + 1
            Mid(sB, lJ, 1) = Chr((nC And 63) + 59)
            Select Case lI Mod 3
            Case 1
                nK = nK Or ((nC \ 64) * 16)
            Case 2
                nK = nK Or ((nC \ 64) * 4)
            Case 0
                nK = nK Or (nC \ 64)
                lJ = lJ + 1
                Mid(sB, lJ, 1) = Chr(nK + 59)
                nK = 0
            End Select
        Next lI
        If lA Mod 3 Then
            lJ = lJ + 1
            Mid(sB, lJ, 1) = Chr(nK + 59)
        End If
        msText = sB
        'MsgBox msText
    End Sub
     
    '~~~.Shrink (Compression)
    'Inverse de la méthode Décompactage (Stretch);
    'le résultat peut contenir n'importe quelle valeur d'octet (0-255)
    Public Sub Shrink()
        Dim nC As Integer
        Dim nD As Integer
        Dim nE As Integer
        Dim lA As Long
        Dim lB As Long
        Dim lI As Long
        Dim lJ As Long
        Dim lK As Long
        Dim sB As String
     
    On Error GoTo Errora
     
        lA = Len(msText)
        lB = lA - 1 - (lA - 1) \ 4
        sB = Space(lB)
        For lI = 1 To lB
            lJ = lJ + 1
            nC = Asc(Mid(msText, lJ, 1)) - 59
            Select Case lI Mod 3
            Case 1
                lK = lK + 4
                If lK > lA Then lK = lA
                nE = Asc(Mid(msText, lK, 1)) - 59
                nD = ((nE \ 16) And 3) * 64
            Case 2
                nD = ((nE \ 4) And 3) * 64
            Case 0
                nD = (nE And 3) * 64
                lJ = lJ + 1
            End Select
            Mid(sB, lI, 1) = Chr(nC Or nD)
        Next lI
        msText = sB
        'MsgBox sB
        Exit Sub
    Errora:
        'msText = ""
    End Sub
     
    'Initialise les nombres aléatoires en utilisant la chaîne clé
    Private Sub Initialize()
        Dim nI As Double
        Randomize Rnd(-1)
        For nI = 1 To Len(msKeyString)
            Randomize Rnd(-Rnd * Asc(Mid(msKeyString, nI, 1)))
        Next nI
    End Sub

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour, ledaker,

    cela ressemble fort à une recherche par tâtonnements aléatoires.
    Ce n'est pas vraiment un algorithme.

    Edit :

    Mais allons plutôt droit au but :
    Tu cherches à savoir commenty écrire en c# la procédure DoXor, hein ?
    Ici, on écrit en VB6, mais on peut te la traduire en "français" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Sub DoXor()
        Dim nC As Integer ' typage de la variable nC (en Integer)
        Dim nB As Integer ' typage de la variable nB (en Integer)
        Dim lI As Long ' typage de la variable lI (en Long)
        lI = 1 ' on initialise à 1 la valeur de lI (on se demande bien pourquoi, compte tenu de la suite !)
        For lI = 1 To Len(msText) ' boucle For (de 1 = la longueur de la chaîne traitée)
            nC = Asc(Mid(msText, lI, 1)) ' valeur ascii du caractère de rang lI
            nB = Int(Rnd * 256) ' nombre aléatoire entre 0 et 256
            Mid(msText, lI, 1) = Chr(nC Xor nB) ' on remplace le caratère de rang lI par une comparaison bit à bit entre nC et nB selon la méthode que tu verras ci-dessous
        Next lI ' fin de la boucle for
        'MsgBox msText
    End Sub
    *** Voilà le mécanisme d'une comlparaison bit à bvit de Xor :

    If expression1 is And expression2 is Then result is
    True True False
    True False True
    False True True
    False False False
    The Xor operator performs as both a logical and bitwise operator. A bit-wise comparison of two expressions using exclusive-or logic to form the result, as shown in the following table:

    If bit in expression1 is And bit in expression2 is Then result is
    0 0 0
    0 1 1
    1 0 1
    1 1 0
    Voilà ...

  3. #3
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Par défaut
    Salut j'ai pas bien compris ces deux fonction est ce qu'il y a une relation entre eux à cause du Rnd car mes connaissances en vb sont limitées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub Initialize()
        Dim nI As Double
        Randomize Rnd(-1)
        For nI = 1 To Len(msKeyString)
            Randomize Rnd(-Rnd * Asc(Mid(msKeyString, nI, 1)))
        Next nI
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Public Sub DoXor()
        Dim nC As Integer
        Dim nB As Integer
        Dim lI As Long
        lI = 1
        For lI = 1 To Len(msText)
            nC = Asc(Mid(msText, lI, 1))
            nB = Int(Rnd * 256)
            Mid(msText, lI, 1) = Chr(nC Xor nB)
        Next lI
        'MsgBox msText
    End Sub

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Ouias (-je le savais ...) ...
    Lis mon Edit...

  5. #5
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Par défaut
    Merci de ta réponse en effet je programme en c# (code g***),jai oublié de préciser que les appelles se font de la manière suivante :
    Initialize
    Shrink
    DoXor
    D'après mes testes il y une relation entre Initialize et DoXor à cause du Rnd à mon avis, et cette relation est ambigue pour moi

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bon...

    Non : l'évènement initialize n'appelle aucune autre procédure ... Il ne fait que préparer un tirage aléatoire (on voit mal la nécessité de le faire de cette manière particulière ... probablement pour un mode aléatoire un peu mieux aléatoire, c'est tout !)

    Le développeur aurait utilisé
    que le résultat n'aurait pas été vraiment différent (juste, peut-être, un alea moins affiné et plus répétitif, c'est tout).

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

Discussions similaires

  1. Algorithme de cryptage décryptage RSA
    Par ISIL3EME dans le forum Sécurité
    Réponses: 4
    Dernier message: 26/07/2010, 15h22
  2. Algorithme de randomisation ... ( Hasard ...? )
    Par Anonymous dans le forum Assembleur
    Réponses: 8
    Dernier message: 06/09/2002, 14h25
  3. recherches des cours ou des explications sur les algorithmes
    Par Marcus2211 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/05/2002, 22h18
  4. Recherche de documentation complète en algorithmes
    Par Anonymous dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 29/03/2002, 12h09
  5. Algorithme génétique
    Par Stephane.P_(dis Postef) dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 15/03/2002, 17h14

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