Problème de variable pour un système de clé.

Résolu
Utilisateur anonyme - 21 janv. 2013 à 22:50
 Utilisateur anonyme - 24 janv. 2013 à 18:55
Bonjour,
je voudrais créer un système de clé pour mon application qui serait générée et vérifiée en fonction du prénom et du nom.
Je pensais à ajouter le contenu de la textbox prénom et la textbox nom et décaler de 3 lettres chaque lettre pour générer la clé (["http://fr.wikipedia.org/wiki/Chiffrement_par_d%C3%A9calage" méthode utilisée par Jules César ])

Ainsi, si par exemple mon prénom est : "ABCD" et mon nom est "EFGH", ma clé sera : "DEFGHIJK" car ABCDEFGH --> DEFGHIJK
J'utilise donc la méthode replace mais qui malheureusement ne supporte que deux surcharges, je dois donc trouver une parade pour pour lui donner l'équivalent de chaque lettre.
J'ai donc trouvé ce code qui "empile" plusieurs variables, mais apparemment cela ne doit pas être possible puisque mon code ne marche que pour quelques lettres ( les dernières il me semble ) :

 Dim PrénomEtNom As String = TextBoxVotrePrénom.Text + TextBoxVotreNom.Text
        Dim CalculCléAD As String = Nothing
        Dim CalculCléBE As String = Nothing
        Dim CalculCléCF As String = Nothing
        Dim CalculCléDG As String = Nothing
        Dim CalculCléEH As String = Nothing
        Dim CalculCléFI As String = Nothing
        Dim CalculCléGJ As String = Nothing
        Dim CalculCléHK As String = Nothing
        Dim CalculCléIL As String = Nothing
        Dim CalculCléJM As String = Nothing
        Dim CalculCléKN As String = Nothing
        Dim CalculCléLO As String = Nothing
        Dim CalculCléMP As String = Nothing
        Dim CalculCléNQ As String = Nothing
        Dim CalculCléOR As String = Nothing
        Dim CalculCléPS As String = Nothing
        Dim CalculCléQT As String = Nothing
        Dim CalculCléRU As String = Nothing
        Dim CalculCléSV As String = Nothing
        Dim CalculCléTW As String = Nothing
        Dim CalculCléUX As String = Nothing
        Dim CalculCléVY As String = Nothing
        Dim CalculCléWZ As String = Nothing
        Dim CalculCléXA As String = Nothing
        Dim CalculCléYB As String = Nothing
        Dim CalculCléZC As String = Nothing
        CalculCléAD = Replace(PrénomEtNom, "A", "D")
        CalculCléBE = Replace(CalculCléAD, "B", "E")
        CalculCléCF = Replace(CalculCléBE, "C", "F")
        CalculCléDG = Replace(CalculCléCF, "D", "G")
        CalculCléEH = Replace(CalculCléDG, "E", "H")
        CalculCléFI = Replace(CalculCléEH, "F", "I")
        CalculCléGJ = Replace(CalculCléFI, "G", "J")
        CalculCléHK = Replace(CalculCléGJ, "H", "K")
        CalculCléIL = Replace(CalculCléHK, "I", "L")
        CalculCléJM = Replace(CalculCléIL, "J", "M")
        CalculCléKN = Replace(CalculCléJM, "K", "N")
        CalculCléLO = Replace(CalculCléKN, "L", "O")
        CalculCléMP = Replace(CalculCléLO, "M", "P")
        CalculCléNQ = Replace(CalculCléMP, "N", "Q")
        CalculCléOR = Replace(CalculCléNQ, "O", "R")
        CalculCléPS = Replace(CalculCléOR, "P", "S")
        CalculCléQT = Replace(CalculCléPS, "Q", "T")
        CalculCléRU = Replace(CalculCléQT, "R", "U")
        CalculCléSV = Replace(CalculCléRU, "S", "V")
        CalculCléTW = Replace(CalculCléSV, "T", "W")
        CalculCléUX = Replace(CalculCléTW, "U", "X")
        CalculCléVY = Replace(CalculCléUX, "V", "Y")
        CalculCléWZ = Replace(CalculCléVY, "W", "Z")
        CalculCléXA = Replace(CalculCléWZ, "X", "A")
        CalculCléYB = Replace(CalculCléXA, "Y", "B")
        CalculCléZC = Replace(CalculCléYB, "Z", "C")
        TextBoxVotreClé.Text = CalculCléZC


Auriez vous une astuce ? Merci !

12 réponses

Utilisateur anonyme
21 janv. 2013 à 23:07
Bonjour,

Une petite fonction alors :
Private Function CryptePrenom(ByVal Prenom As String) As String
    Dim alpha As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZABC"
    Dim resultat As String = ""
    For Each lettre As String In Prenom
        resultat &= alpha.Substring(alpha.IndexOf(lettre) + 3, 1)
    Next
    Return resultat
End Function
3
Utilisateur anonyme
22 janv. 2013 à 21:11
Voilà,
merci à banana32 qui une fois de plus m'aide ! J'ai donc adapté le code pour qu'il corresponde à mon cas ( Deux textebox )
Public Class Form1
    Private Function CryptePrenom(ByVal Prenom As String, ByVal Nom As String) As String
        Dim alpha As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZABC"
        Dim RésultatPrénom As String = ""
        Dim RésultatNom As String = ""

        For Each LettrePrénom As String In Prenom
            RésultatPrénom &= alpha.Substring(alpha.IndexOf(LettrePrénom) + 3, 1)
        Next
        For Each LettreNom As String In Nom
            RésultatNom &= alpha.Substring(alpha.IndexOf(LettreNom) + 3, 1)
        Next
        TextBoxClé.Text = RésultatPrénom + RésultatNom
        Return RésultatPrénom & RésultatNom
    End Function
    Private Sub ButtonChiffrer_Click(sender As Object, e As EventArgs) Handles ButtonChiffrer.Click
        CryptePrenom(TextBoxPrénom.Text, TextBoxNom.Text)
    End Sub
End Class


Merci encore une fois de plus
3
Utilisateur anonyme
22 janv. 2013 à 21:30
En général, on utilise une fonction pour exploiter son résultat. Une fonction renvoie un résultat. C'est la grande différence qu'il y a par rapport à une sub qui ne retourne rien.

Puisque tu souhaites afficher le résultat de ta fonction dans un textbox, tu dois supprimer cette ligne de ta fonction :
 TextBoxClé.Text = RésultatPrénom + RésultatNom

Et écrire dans le code de ton bouton :
TextBoxClé.Text = CryptePrenom(TextBoxPrénom.Text, TextBoxNom.Text)


J'espère que tu as compris mon explication...
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2013 à 07:58
Bpnjour, Banana32,
resultat &= alpha.Substring(alpha.IndexOf(lettre) + 3, 1)

transformerait par exemple "X" en "A", sous VB.Net ?

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
22 janv. 2013 à 12:31
Bonjour ucfoutu,

&= indique qu'on ajoute quelque chose en fin de chaîne. La variable 'resultat' est donc une chaîne qui sera retournée par la fionction.

Bonne journée.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2013 à 12:47
Je comprends bien cet aspect-là ...
mais quand il concatènera la "traduction" de "X" avec :
alpha.Substring(alpha.IndexOf(lettre) + 3, 1)

C'est un "A", qu'il concatènera ? ===>> je ne vois pas comment car, pour moi, il concatènera un "[" et non le "A" souhaité


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Utilisateur anonyme
22 janv. 2013 à 12:49
D'où sors-tu ce '[' s'il te plaît ?
0
Utilisateur anonyme
22 janv. 2013 à 12:51
SubString -> Mid en vb6
IndexOf -> assimilable à InStr avec variantes.
0
Utilisateur anonyme
22 janv. 2013 à 13:00
Il ne s'agit pas de rechercher la valeur ASCII

Si l'on devait expliquer ceci: variable.IndexOf(lettre)
-> Quel est l'index de 'lettre' dans 'variable'.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2013 à 13:03
Dialogue de sourds, apparemment :
Une idée :
Montre-moi le résultat de ton code (tel quel) pour la chaîne de départ "XYZ"




________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Utilisateur anonyme
22 janv. 2013 à 13:13
ABC
0
Utilisateur anonyme
24 janv. 2013 à 18:55
Oui parfaitement, j'ai enfin compris le sens du return dans les fonctions et surtout comment l'utiliser !
0
Rejoignez-nous