Problème CODE c# besoin d'aide

Tropiko - Modifié le 20 janv. 2023 à 23:13
Tropiko- Messages postés 6 Date d'inscription samedi 21 janvier 2023 Statut Membre Dernière intervention 25 janvier 2023 - 25 janv. 2023 à 08:53

Salut j'ai un projet pour ma première année de BTS et je dois m'occuper de plusieurs choses dont crypter un mot de passe avec une formule donnée et l'écrire dans un fichier csv mais j'ai un problème avec ma formule et j'ai du mal à écrire dans une colonnes précises + dernière ligne du fichier csv. Si quelqu'un pourrait m'aider sur ça , ça serait super.
(code en question) :


 

private void btnvalider_Click(object sender, EventArgs e)
        {
            string motmaj = tbcrypt.Text.ToUpper();
            string mdpcrypte = "";
            char lettre;
            string alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
            for (int i = 0; i < motmaj.Length; i++)
            {
                lettre = motmaj[i];
                int j = 0;
                while (lettre != alpha[j])
                {
                    j = j + 1;
                    mdpcrypte = mdpcrypte + alpha[(j + 3) % 26];
                }
            }
            StreamWriter fichiermdp = new StreamWriter("digicod_secure.csv", true);

Merci d'avoir lu

5 réponses

vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
20 janv. 2023 à 12:31

Bonjour

Pour poster du code prière de suivre ce tuto merci : https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code


0

Ok merci de l'info le voilà
 

private void btnvalider_Click(object sender, EventArgs e)
        {
            string motmaj = tbcrypt.Text.ToUpper();
            string mdpcrypte = "";
            char lettre;
            string alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
            for (int i = 0; i < motmaj.Length; i++)
            {
                lettre = motmaj[i];
                int j = 0;
                while (lettre != alpha[j])
                {
                    j = j + 1;
                    mdpcrypte = mdpcrypte + alpha[(j + 3) % 26];
                }
            }
            StreamWriter fichiermdp = new StreamWriter("digicod_secure.csv", true);
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
Modifié le 20 janv. 2023 à 17:36

Ton code aurait fonctionné si dans la boucle While il n'y avait que la ligne 10 avec l'incrémentation de la variable j . La lettre à ajouter au mot chiffré doit se faire lorsque lettre = motmaj[i] et là on sort de la boucle While pour ajouter la lettre .

Voici le code correct

private void btnvalider_Click(object sender, EventArgs e)
        {
            string motmaj = tbcrypt.Text.ToUpper();
            string mdpcrypte = "";
            char lettre;
            string alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
            for (int i = 0; i < motmaj.Length; i++)
            {
                lettre = motmaj[i];
                mdpcrypte += alpha[((int)lettre - 65 + 3) % 26];
            }
            StreamWriter fichiermdp = new StreamWriter("digicod_secure.csv", true);

Expliquons la ligne 10 de ce code

Supposons que tu veux chiffrer la chaine  "ALAIN" : Le "A" a comme code ASCII 65 ce que l'on trouve en faisant (int)lettre . Donc 65 - 65 + 3 donne 3 ce qui fait que le "A" est chiffré en "D" . Ainsi "ALAIN" deviendra "DODLQ" et "ZORRO" deviendra "CRUUR" . Attention le code ASCII de la lettre est le premier 65 après le mot Donc . Si on prend comme exemple "BERNARD" ce serait 66 - 65 + 3 ( le 3 est le décalage que tu fais : c'est ce que l'on appelle le chiffrement de César si je me souviens bien ) et 66 est le code ASCII de la lettre "B" .

Maintenant pour ton histoire de colonnes et ligne du fichier .csv il nous faudrait plus de précision .


0
Tropiko- Messages postés 6 Date d'inscription samedi 21 janvier 2023 Statut Membre Dernière intervention 25 janvier 2023
21 janv. 2023 à 21:35

Bonsoir je vous réponds sous un autre compte car j'ai rencontré quelques problèmes mais je vous remercie pour m'avoir éclairer sur le sujet j'ai compris où était mon erreur et je l'ai corrigé . Merci beaucoup

Bonne soirée

0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169 > Tropiko- Messages postés 6 Date d'inscription samedi 21 janvier 2023 Statut Membre Dernière intervention 25 janvier 2023
Modifié le 22 janv. 2023 à 06:04

Salut

Qu'en est-il pour ton histoire de colonnes et ligne du fichier .csv ?

0
Tropiko- Messages postés 6 Date d'inscription samedi 21 janvier 2023 Statut Membre Dernière intervention 25 janvier 2023 > vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024
23 janv. 2023 à 16:10

Salut

Alors en "gros" je dois écrire ce mot de passe chiffré dans un tableau CSV , sachant que les mots de passes ne durent que pour une période donnée et c'est ici que je bloque je vois pas comment créer une "échéance en quelque sorte" je joins une capture d'écran de mon fichier CSV si ça peut éclairer sur le sujet


Merci beaucoup pour votre aide , bonne journée/soirée

0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656 > Tropiko- Messages postés 6 Date d'inscription samedi 21 janvier 2023 Statut Membre Dernière intervention 25 janvier 2023
23 janv. 2023 à 17:29

Tu sais écrire une classe?

0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169 > Tropiko- Messages postés 6 Date d'inscription samedi 21 janvier 2023 Statut Membre Dernière intervention 25 janvier 2023
23 janv. 2023 à 18:28

Bonsoir

Le fichier .csv comporte bien 4 colonnes ( nom de la porte, date début, date fin et code chiffré) ?

Avec une classe cela se fait sans souci . On attend votre réponse .  

0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
20 janv. 2023 à 16:58

Bonjour 

je n'ai pas regardé ton code, je fais parfaitement confiance à VB95 pour la réponse.

Par contre, crypter ça n'existe pas.

  1. Chiffrer est l'action de rendre un message illisible grâce à l'utilisation d'une clé, d'un algorithme, dans le but que seuls, ceux qui ont la clé puisse le lire. Étymologiquement, ça vient du "chiffre de César", il me semble
  2. Déchiffrer est l'action de rendre le message lisible, avec la clé.
  3. Décrypter est l'action de tenter de rendre un message lisible sans connaître la clé, casser le code en gros.

Crypter cela voudrait dire rendre le message illisible sans qu'il y a clé, ni de méthode. Et que potentiellement personne, même pas l'auteur ne puisse jamais le lire.


0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
20 janv. 2023 à 17:13

Salut Whis

Très intéressante ton intervention et cela paraît logique quand on réfléchit . Et merci pour la confiance !

A ++

0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656 > vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024
21 janv. 2023 à 09:17

Bonjour 

ben en fait, j'aurais dû y jetter un oeil quand même, car ce code est un chiffre de César.

Du coup, je peux étendre un peu mon explication.

La méthode est d'appliquer un décalage fixe des lettres de l'alphabet. Ce décalage est circulaire, c'est à dire que si on arrive à la fin, on recommence au début.

Dans notre cas, la clé est 3, Et grâce au modulo 26, on a la circularité qui fait que Z sera chiffré C.

On constate que c'est un chiffrement facile à faire et aussi facile à déchiffrer, il suffit d'appliquer le décalage dans l'autre sens (soit -3, soit 23 puisque c'est circulaire).

Par contre, c'est aussi facile à décrypter. Au pire, on fait 26 essais (en fait 25 car le décalage de 0 n'aurait aucun sens...). Mais si on connaît la langue du message, on peut gagner du temps en faisant des "paris". En français, le E est la lettre la plus courante. Dans le message chiffré, on compte les occurrences de chaque lettre, celle qui représente le E aura toutes les chances d'être la plus représentée, ou à défaut la deuxième, voire la 3eme, ect... Si on fait 10 tentatives c'est vraiment le bout du monde....


Les systèmes de de chiffrements actuels sont immensément plus complexes, et je n'ai pas la moindre idée de comment ça fonctionne.

Mais l'Histoire me passionne et elle regorge de "chiffres".

Je vous invite à voir le film Imitation Game, qui retrace comment Alan Turing (père de l'informatique, on lui doit notamment la.machine de Turing, qui n'est pas la machine du film) a cassé Enigma, le chiffrement Allemand.

Ou encore, le souffle de vent de 98, qui montre comment les américains ont utilisé des phrase codées dans une langue amérindienne peu connue lors de la campagne du Japon ou au vietnam.

0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169 > Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024
21 janv. 2023 à 18:04

Salut Whis

C'est ce que j'ai mis dans mon commentaire du code que je lui ai proposé . Mais toi tu as développé le sujet du chiffre de César avec élégance et perspicacité .

0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656 > vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024
21 janv. 2023 à 20:11

c'était pour étayer la différence entre chiffrer, déchiffrer et décrypter avec le code sur lequel il travaille.

0
Tropiko- Messages postés 6 Date d'inscription samedi 21 janvier 2023 Statut Membre Dernière intervention 25 janvier 2023
21 janv. 2023 à 21:35

Bonsoir merci pour l'info je n'étais pas au courant 

Bonne soirée

0
Tropiko- Messages postés 6 Date d'inscription samedi 21 janvier 2023 Statut Membre Dernière intervention 25 janvier 2023
24 janv. 2023 à 10:24

Salut merci de ta réponse alors,

je débute dans les classes mais je peux essayer de me pencher sur la question en tout cas

0

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

Posez votre question
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
24 janv. 2023 à 10:33

Alors tu ne fais pas ton apprentissage dans le bon sens.

Ton code est écrit dans une méthode abonnée au click d'un bouton, un bouton c'est une classe (avec une interface graphique certes, mais une classe quand même), avant de passer à une application fenêtrée, il faudrait avoir compris le concept de classe.

C'est un fondamental en C#.

Je t'invite à suivre le cours de Tahé et reprendre ton projet après.

https://tahe.developpez.com/dotnet/csharp/


0
Tropiko- Messages postés 6 Date d'inscription samedi 21 janvier 2023 Statut Membre Dernière intervention 25 janvier 2023
25 janv. 2023 à 08:53

Salut ,

j'ai était jeté un oeil hier à son cours , il a l'air très complet j'vais m'y mettre ce week-end merci pour l'info et au final j'ai trouvé une solution pour gérer les dates sans utiliser de classe c'est beaucoup plus basique mais ça fait l'affaire.

Bonne journée/soirée

0
Rejoignez-nous