Bonjour
Pour poster du code prière de suivre ce tuto merci : https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
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 .
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
Salut
Qu'en est-il pour ton histoire de colonnes et ligne du fichier .csv ?
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
Tu sais écrire une classe?
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 .
Bonjour
je n'ai pas regardé ton code, je fais parfaitement confiance à VB95 pour la réponse.
Par contre, crypter ça n'existe pas.
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.
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Salut Whis
Très intéressante ton intervention et cela paraît logique quand on réfléchit . Et merci pour la confiance !
A ++
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.
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é .
c'était pour étayer la différence entre chiffrer, déchiffrer et décrypter avec le code sur lequel il travaille.
Bonsoir merci pour l'info je n'étais pas au courant
Bonne soirée
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionAlors 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/
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
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
20 janv. 2023 à 13:26
Ok merci de l'info le voilà