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

C# Discussion :

c# méthode césar


Sujet :

C#

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4
    Par défaut c# méthode césar
    bonjour à tous !!
    je suis nouvelle ici j'aimerais savoir si quelqu'un peut m'aider ?
    j'ai réussi à crypter mais je n'arrive pas à décrypter si quelqu'un à une idée! sa serait cool
    merci ^^

    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
    namespace projetcsharpcesar
    {
        public partial class Form1 : Form
        {
     
            public Form1()
            {
                InitializeComponent();
            }
            private void button1_Click(object sender, EventArgs e)
            {
                char entreC;
                int clef = 8;/*c'est la clef qui sert au cryptage*/
                entreC = richTextBox1.Text.ToCharArray()[0];
                int resultatcry = (entreC + clef)%256;
                richTextBox2.Text = resultatcry.ToString();  
            }
     
            private void button2_Click(object sender, EventArgs e)
            {
                char entreC;
                int clef= 8;
                entreC = richTextBox1.Text.ToCharArray()[0];
                int resultatdécry = (entreC - clef) * 256;
                richTextBox3.Text = resultatdécry.ToString();
            }
    Voici mon code pour crypter

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    C'est koi le problème :
    Cela ne décrypte pas la bonne valeur ? Ou cela provoque une erreur ?

    Note : Pour le code, met le entre des balises de code (bouton # de l'éditeur de texte).

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4
    Par défaut
    je n'arrive pas à décrypté enfin à retrouver la valeur du début.

    désolé pour le code je vais faire attention pour la prochaine fois

    le bouton 1 c'est mon cryptage

    et le bouton 2 c'est une de mes idées nulle pour retrouver ma valeur

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Bah c'est normal, tu lui demande d'afficher ton int, alors il afficher une chaine de caractère correspondant au chiffre : Si 124 affiche 124.
    Il faut que tu convertisse ton int en string via une méthode qui utilises la table ascii.
    Pour cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char c = Convert.ToChar(64);
    En fait le code de ton deuxième bouton devrait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    string entreC;
    int clef = 8;
    entreC = richTextBox2.Text;
    int resultatdécry = (Convert.ToInt32(entreC) - clef);
    richTextBox3.Text = Convert.ToChar(resultatdécry).ToString();
    Pourquoi ?
    1) Dans le deuxième texte boxe il faut tout récupérer, pas juste le premier charactère de ton résultat. Avec ton ancien code tu ne récupérer que le premier chiffre et non le nombre.
    2) Faut convertir le string en int -> Convert.ToInt32 Très utile la classe Convert
    3) Pourquoi ne pas multiplier par 256 ? Ok quand tu passes par des char mais comme là je suis passe par des stings je l'ai enlevé.
    4) Ensuite il faut utiliser Convert.Tochar()

    Il ne te reste plus qu'à modifier le premier bouton pour prendre plus qu'un char, mais une chaine de caractère entière.
    Je te laisse faire cela

  5. #5
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4
    Par défaut OUF sa marche :)
    merci pour ton aide,
    j'avais fais un tableau pour essayer d'inserer une boucle pour traduire chaque case de mon tableau par contre j'ai un soucis ou dans le décryptage ou dans le cryptage. Tu aurais une idée pour moi ? resté sur le tableau avec la boucle ou partir sur une autre solution j'ai encore un peu de mal avec l'algo ^^

    dans l'objectif de ne plus traduire une seul lettre mais un vrai texte

  6. #6
    Membre Expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Par défaut
    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
     
    public char coder(char entreC)
                int clef = 8;/*c'est la clef qui sert au cryptage*/
                entreC = richTextBox1.Text.ToCharArray()[0];
                int resultatcry = (entreC + clef)%256;
                return resultatcry.ToString()[0];
    }
     
    public char[] coder(char[] aCoder)
    {
    if(aCoder==null) return null;
    char[] toReturn = new char[aCoder.length];
            for(int i = 0 ; i < aCoder.length ; i++)
           {
                  toReturn[i] = coder(aCoder[i]);
            }
          return toReturn;
    }
    ?

  7. #7
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    La solution de hed62 m'a l'air pas mal.
    J'ai essaye de faire le programme en partant de l'idée de départ que je t'ai proposé mais ce n'est pas terrible.
    En fait tout dépend si tu veut cryper char en rajoutant une valeur, ou l'enssemble de la chaine ?
    Le mieux est de crypter chaque char et de le stockes dans un tableau ou une liste.

  8. #8
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4
    Par défaut algo :(
    oui mon but est de crypter chaque caractère


    merci pour ton aide.
    j'ai un souci pour avec la méthode je dois l'insérer avec mes boutons ? ou faire une méthode appart et prendre la valeur de ma méthode dans mon bouton

    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
     
     
    namespace projetcsharpcesar
    {
     
        public partial class Form1 : Form
        {
     
     
            public Form1()
            {
                InitializeComponent();
            }
            private void button1_Click(object sender, EventArgs e)
            {
     
                char entreC = Convert.ToChar(64);
                int clef = 8;/*c'est la clef qui sert au cryptage*/
                entreC = richTextBox1.Text.ToCharArray()[0];
                int resultatcry = (entreC + clef);
                richTextBox2.Text = resultatcry.ToString();  
            }
     
            private void button2_Click(object sender, EventArgs e)
            {
                string entreC;
                int clef = 8;
                entreC = richTextBox2.Text;
                int resultatdécry = (Convert.ToInt32(entreC) - clef);
                richTextBox3.Text = Convert.ToChar(resultatdécry).ToString();
            }
     
            private void button3_Click(object sender, EventArgs e)
            {
                richTextBox1.Text = ""; /*éfface la valeur de la TextBox*/
                richTextBox2.Text = "";
                richTextBox3.Text = "";
     
            }
     
            private void button4_Click(object sender, EventArgs e)
            {
                 Close();
            }
        }

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Par défaut
    Si ça peut t'aider :

    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
     
            static void testCrypte()
            {
                String resultat;
                Console.WriteLine("Entrez un text : ");
                resultat = Console.ReadLine();            
                resultat = crypter(resultat);
                Console.WriteLine("Text après cryptage : "+resultat);
                resultat = decrypter(resultat).ToString();
                Console.WriteLine("Text après décryptage : " + resultat);
                Console.ReadLine();
            }
     
            static string crypter(string param)
            {
                char entreC;
                int clef = 8;/*c'est la clef qui sert au cryptage*/
                entreC = param.ToCharArray()[0];
                int resultatcry = (entreC + clef) - 256 * (Math.Abs((entreC + clef) / 256)); 
                return resultatcry.ToString();  
            }
     
            static char decrypter(string param)
            {
                char entreC;
                int clef= 8;
                int val = int.Parse(param);
                int resultatdecry = (val - clef) + 256 / (Math.Abs((val - clef) * 256));
                entreC = (char)resultatdecry;
                return entreC;
            }
    Ce qu'il faut savoir c'est que "entreC = param.ToCharArray()[0];" ne prend QUE le premier caractère du mot !
    J'ai gardé l'option du Modulo 256 !

    Sinon effectivement tu peux utiliser des méthodes à qui tu passes le texte en paramètre et qui te retourne ce que tu veux string, char, int .....

  10. #10
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    De toute façon le mieux est d'éviter la duplication du code en créant une méthode pour un code qui va être répété plus d'une fois.
    De plus de cette façon il te sera plus simple de voir comment découper les choses.

    Dans ton cas une fonction de cryptage et de décryptage d'un char est conseillé. Puis deux autres fonctions, chacune prenant en paramète un tableau de char, elle le parcours et pour chaque char l'une d'entre elle appelle crypter et l'autre decrypter.
    Dans tes boutons tu n'auras plus qu'à appeler ces fonctions en passant en paramètre un richtextbox1.Text.ToCharArray() .

    Il te faudrat stocker la valeur de chaque char crypter dans une structure (tableau, liste, ...).

    Tu peux aussi dev un algo plus complexe pour le cryptage de tes données, cela dépende de tes besoins. Mais bon dans ce cas là le mieux sera de regarder les classes du framework existantes dans ce domaine.

  11. #11
    Membre Expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Par défaut
    +1 ! La c'est pour developper ta propre ptite tambouille de cryptage.

    Si tu veux complexifier et assurer plus de sécurité, cherche dans le framework en effet

Discussions similaires

  1. Cryptage selon la méthode de César
    Par gege2061 dans le forum Télécharger
    Réponses: 7
    Dernier message: 05/07/2016, 13h38
  2. cryptage d'un fichier par la méthode césar
    Par wedge.tm dans le forum C
    Réponses: 6
    Dernier message: 12/01/2007, 16h08
  3. [Singleton] Différences avec méthodes statiques
    Par Franche dans le forum Design Patterns
    Réponses: 1
    Dernier message: 26/02/2003, 17h10
  4. Probleme d'impression avec la méthode TForm->Print()
    Par Kid Icarus dans le forum C++Builder
    Réponses: 13
    Dernier message: 31/07/2002, 14h26
  5. Cryptage en C selon la méthode de césat
    Par shenron dans le forum C
    Réponses: 2
    Dernier message: 31/05/2002, 08h22

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