Partage
  • Partager sur Facebook
  • Partager sur Twitter

[VB.net] question ?

Code de César

    16 mars 2011 à 14:00:35

    Bonjour,
    comme j'utilise régulièrement le code de césar (cf : mon amis wikipedia)
    J 'aimerait créer un prog' qui fait tout le boulot ...
    C'est a dire que quand l'utilisateur entre sont message dans une text box le message coder apparait dans une autre text box .
    Est-ce possible ? si oui , comment ?
    Car la j'ai pas du tout d'idée :-°

    • Partager sur Facebook
    • Partager sur Twitter
      18 mars 2011 à 19:35:29

      Je pense que c'est possible en passant par l'ascii. Je sais pas si tu connais mais en gros chaque caractère possède un chiffre qui lui est associé ( demande a ton ami wiki ;) ) et en gros il te suffit de faire +1, par exemple en ascii le "a" vaut 61 donc tu fait 61+1 = 62 :) ( je suis trop fort non ? ^^ ) et hop le "a" deviens "b" ( c'est bien sa le code de césar non ? )
      bon pour le codage total regarde ici : http://fr.wikipedia.org/wiki/American_ [...] n_Interchange
      • Partager sur Facebook
      • Partager sur Twitter
        18 mars 2011 à 20:10:28

        namespace ChiffrementDecallage
        {
            static class CodeCesar
            {
                static private char[] _sentence;
                static private int _letter;
                static private string _output;
        
                static public string Encode(string text)
                {
                    _sentence = text.ToArray();
                    _output = null;
        
                    for (int i = 0; i < _sentence.Length; i++)
                    {
                        _letter = (int)_sentence[i];
        
                        if (_letter >= 97 && _letter <= 119)
                            _letter += 3;
                        else if (_letter + 3 == 123)
                            _letter = 97;
                        else if (_letter + 3 == 124)
                            _letter = 98;
                        else if (_letter + 3 == 125)
                            _letter = 99;
        
                        _sentence[i] = (char)_letter;
                    }
                    foreach (char op in _sentence)
                    {
                        _output += op;
                    }
                    return _output;
                }
        
                static public string Decode(string text)
                {
                    _sentence = text.ToArray();
                    _output = null;
        
                    for (int i = 0; i < _sentence.Length; i++)
                    {
                        _letter = (int)_sentence[i];
        
                        if (_letter >= 100 && _letter <= 122)
                            _letter -= 3;
                        else if (_letter - 3 == 96)
                            _letter = 122;
                        else if (_letter - 3 == 95)
                            _letter = 121;
                        else if (_letter - 3 == 94)
                            _letter = 120;
        
                        _sentence[i] = (char)_letter;
                    }
                    foreach (char op in _sentence)
                    {
                        _output += op;
                    }
                    return _output;
                }
            }
        }
        


        Bon ce n'est surement pas tres optimise, mais voila un bon debut je crois. Par contre, ce code ne gere pas les majuscules et les accents.

        A partir de ca tu devrait pouvoir t'en sortir je crois.

        Bonne journee

        Doum

        Edit : Le code cesar est un decallage de +3 normalement.

        Citation : Wiki

        Quelques clés particulières

        Décalage de 1 rang : clé utilisée par Auguste ;
        Décalage de 2 rangs : Hélène (L vaut N) ;
        Décalage de 3 rangs : clé utilisée par César ;
        Décalage de 10 rangs : avocat (A vaut K) ;
        Décalage de 13 rangs : ROT13 où les fonctions de codage et décodage sont identiques ;
        Décalage de 15 rangs : Hergé (R vaut G), Déesse (D vaut S) ou Happé (A vaut P) ;
        Décalage de -4 rangs : cassette (K 7) ;
        Décalage de -5 rangs : cassis (K 6).



        Edit 2 : Desole pour le code en c# mais je ne connais pas du tout le vb.net, mais l'idee est la :)
        • Partager sur Facebook
        • Partager sur Twitter
          18 mars 2011 à 20:39:00

          C# et VB sont facilement convertibles avec ce traducteur

          Namespace ChiffrementDecallage
          	NotInheritable Class CodeCesar
          		Private Sub New()
          		End Sub
          		Private Shared _sentence As Char()
          		Private Shared _letter As Integer
          		Private Shared _output As String
          
          		Public Shared Function Encode(text As String) As String
          			_sentence = text.ToArray()
          			_output = Nothing
          
          			For i As Integer = 0 To _sentence.Length - 1
          				_letter = AscW(_sentence(i))
          
          				If _letter >= 97 AndAlso _letter <= 119 Then
          					_letter += 3
          				ElseIf _letter + 3 = 123 Then
          					_letter = 97
          				ElseIf _letter + 3 = 124 Then
          					_letter = 98
          				ElseIf _letter + 3 = 125 Then
          					_letter = 99
          				End If
          
          				_sentence(i) = ChrW(_letter)
          			Next
          			For Each op As Char In _sentence
          				_output += op
          			Next
          			Return _output
          		End Function
          
          		Public Shared Function Decode(text As String) As String
          			_sentence = text.ToArray()
          			_output = Nothing
          
          			For i As Integer = 0 To _sentence.Length - 1
          				_letter = AscW(_sentence(i))
          
          				If _letter >= 100 AndAlso _letter <= 122 Then
          					_letter -= 3
          				ElseIf _letter - 3 = 96 Then
          					_letter = 122
          				ElseIf _letter - 3 = 95 Then
          					_letter = 121
          				ElseIf _letter - 3 = 94 Then
          					_letter = 120
          				End If
          
          				_sentence(i) = ChrW(_letter)
          			Next
          			For Each op As Char In _sentence
          				_output += op
          			Next
          			Return _output
          		End Function
          	End Class
          End Namespace
          

          • Partager sur Facebook
          • Partager sur Twitter

          [VB.net] question ?

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown