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 :

Crypter un mot ou une phrase


Sujet :

VB.NET

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 51
    Par défaut Crypter un mot ou une phrase
    Bonjour,

    comme le titre le mentionne, ca ce passe d'un TEXTBOX a un textbox

    l'usager doit ecrire un mot dans un textbox et lorsque je click sur mon bouton, il encrypte le mot du txtbox1 au txtbox2.

    Lorsqu il encrypte, il fait un saut de 13 aux lettres.

    Par exemple:

    - a devient n ;
    - b devient o ;
    - c devient p ;
    - ...
    - w devient j ;
    - x devient k ;
    - y devient l ;
    - z devient m ;
    etc...

    comment est ce que je peux lui dire de prendre chaque lettre et de lui faire un bon de 13 ?

    J ai essaye un truc comme

    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
       For i = 0 To TxtChaine.Text.Length
    
                If i Mod 2 = 0 Then
                    TxtChiffrer.Text += GetChar(TxtChaine.Text, 1) ----> 
    je ne voie vraiment pas comme je peux faire dire au programme 
    de prendre chaque lettre et de lui faire
    un saut de 13 dans la table d ascii.
    (ici j ai voulu lui faire faire un saut 
    de 13 sur les chiffres paire et sauts de 
    13 sur les chiffre impaire mais sans success)
                       Else
                    stNom += GetChar(txtbox.Text, i)
    
                End If
            Next


    Merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    J'ai pas trop compris ton histoire de chiffre pair ou impair... je vois pas le rapport avec le problème que tu cherches à résoudre en fait.

    Le plus simple, en supposant que tu ne gères que les lettres minuscules sans accent, c'est de convertir chaque caractère en un nombre de 0 à 25 (plus pratique que de 1 à 26 pour l'utilisation du modulo), d'ajouter 13 et de faire modulo 26 sur le résultat (pour rester entre 0 et 25), puis de reconvertir en caractère

    Les lettres minuscules commencent à 97 ('a'), donc tu peux faire quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        Dim texteEnClair As String = TxtChaine.Text
        Dim resultat As New StringBuilder()
        For i = 0 To texteEnClair.Length - 1
            If texteEnClair(i) >= "a"c AndAlso texteEnClair(i) <= "z"c Then
                Dim val As Integer = Asc(texteEnClair(i)) - 97
                Dim val2 As Integer = (val + 13) Mod 26
                resultat.Append(Chr(val2 + 97))
            Else
                resultat.Append(texteEnClair(i))
            End If
        Next
        TxtChiffrer.Text = resultat.ToString()

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 51
    Par défaut
    En faite plus loin ca me demande de faire la convertion pour les lettres majuscule aussi mais je devrais reussir ce bout la.

    par contre, lorsque je regarde les tables d ascii sur le web, je ne voie rien pour les accents sur les e, o etc... est ce que ces ''exeption'' je dois les ajouter maniellement ?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Le code ASCII ne gère pas les accents... pour ça on utilise d'autres encodages, en général ISO-8859-1 (ANSI) ou UTF-8.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 51
    Par défaut
    Ok.

    J' ai mis le code suivant dans le keypress de mon txtbox afin qu il accept uniquement les lettres minuscules et majuscules.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Asc(e.KeyChar) < 65 Or Asc(e.KeyChar) > 90 And Asc(e.KeyChar) <> 8 And Asc(e.KeyChar) And Asc(e.KeyChar) < 97 Or Asc(e.KeyChar) > 122 Then
                e.KeyChar = Nothing
            End If
    j'ai l impression que lorsque j integre ton code ca arrete de fonctionner.

  6. #6
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Bonjour,

    Personnellement, je fais un peu différemment afin de gérer les minuscules/majuscules, j'ai aussi un paramètre optionnel qui définit si un caractère accentué doit être traité comme le caractère équivalent de base (sinon il sera laissé tel quel)

    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
    Function Rot13(ByVal ch As Char) As Char
        Dim offset As Integer
        Select Case ch
            ' Si le caractère est entre A et M (minuscule ou majuscule)
            Case "a"c To "m"c, "A"c To "M"c
                ' on ajoutera 13
                offset = 13
            ' Si le caractère est entre N et Z (minuscule ou majuscule)
            Case "n"c To "z"c, "N"c To "Z"c
                ' on enlèvera 13 (= on ajoutera 13 modulo 26)
                offset = -13
            ' Si c'est autre chose
            Case Else
                ' on laisse tel quel
                offset = 0
        End Select
        Return Convert.ToChar(Convert.ToInt32(ch) + offset)
    End Function
     
    Function Rot13(ByVal source As String) As String
        Dim sb As New Text.StringBuilder(source.Length)
        For Each ch As Char In source
            sb.Append(Rot13(ch))
        Next
        Return sb.ToString
    End Function
    Au besoin (on sait jamais) une méthode pour supprimer les accents (et autres diacritiques)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function RemoveDiacritics(ByVal source As String) As String
        Dim sb As New Text.StringBuilder(source.Length)
        ' Normalize avec ce paramètre, sépare les diacritiques de leur caractère de base
        For Each ch In source.Normalize(Text.NormalizationForm.FormD)
            Dim uc = Globalization.CharUnicodeInfo.GetUnicodeCategory(ch)
            ' si le caractère n'est pas un diacritique on le conserve
            If uc <> Globalization.UnicodeCategory.NonSpacingMark Then
                sb.Append(ch)
            End If
        Next
        Return sb.ToString
    End Function
    Note: tu peux utiliser Char.IsLetter pour vérifier si ton KeyChar est bien une lettre.
    Cordialement !

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 51
    Par défaut
    Merci bien a vous deux, je vais continuer de travailler la dessus car il y a d autre restriction que je dois suivre etc...


    textbox1 = un mot ou phrases que l usager rentrer
    textbox2 = cryptation de textbox1
    textbox3 = decryptation de textbox2

    Eventuellement j aurais un 3eme textbox et un 2eme bouton qui a partir du code generer retrouve ce que l usager avait rentrer dans le textbox1

  8. #8
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    L'avantage du Rot-13 c'est que pour décrypter, il te suffit de recrypter ton texte crypté (mon code le montre bien, en ajoutant 13 on passe dans l'autre moitié de l'alphabet et donc en recryptant on enlèvera 13 et vice-versa)

    Par contre il serait peut-être préférable d'utiliser l'évènement KeyDown (par exemple la touche Suppr n'est pas détectée par le KeyPress, au moins chez moi )

    Cordialement !

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 51
    Par défaut
    Citation Envoyé par Sehnsucht Voir le message
    L'avantage du Rot-13 c'est que pour décrypter, il te suffit de recrypter ton texte crypté (mon code le montre bien, en ajoutant 13 on passe dans l'autre moitié de l'alphabet et donc en recryptant on enlèvera 13 et vice-versa)

    Par contre il serait peut-être préférable d'utiliser l'évènement KeyDown (par exemple la touche Suppr n'est pas détectée par le KeyPress, au moins chez moi )

    Cordialement !
    ah ben oui lol...je me sens *** par fois lol

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

Discussions similaires

  1. Compter les mots d'une phrase
    Par miss64 dans le forum Langage
    Réponses: 12
    Dernier message: 07/01/2017, 10h57
  2. [Débutant] Crypter un mot ou une phrase (Espace ne fonctionne pas :( )
    Par swizerman dans le forum VB.NET
    Réponses: 17
    Dernier message: 08/11/2014, 16h51
  3. recherche par mots dans une phrase ou titre
    Par pierrot67 dans le forum Bases de données
    Réponses: 3
    Dernier message: 11/09/2006, 09h29
  4. Lister les mots d'une phrase
    Par krole57 dans le forum Delphi
    Réponses: 4
    Dernier message: 14/06/2006, 14h20
  5. Recherche d'un mot dans une phrase se touvant dans un champ
    Par Grandbastien dans le forum Access
    Réponses: 3
    Dernier message: 02/04/2006, 09h58

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