Cryptage Vigenère
Fermé
Takago
Messages postés
1
Date d'inscription
vendredi 7 décembre 2012
Statut
Membre
Dernière intervention
7 décembre 2012
-
7 déc. 2012 à 16:37
ReganDryke Messages postés 13 Date d'inscription samedi 8 décembre 2012 Statut Membre Dernière intervention 22 février 2013 - 8 déc. 2012 à 22:58
ReganDryke Messages postés 13 Date d'inscription samedi 8 décembre 2012 Statut Membre Dernière intervention 22 février 2013 - 8 déc. 2012 à 22:58
1 réponse
ReganDryke
Messages postés
13
Date d'inscription
samedi 8 décembre 2012
Statut
Membre
Dernière intervention
22 février 2013
6
8 déc. 2012 à 22:58
8 déc. 2012 à 22:58
Facile tu n'as qu'à tester si ton message en clair est plus long que ta clef. S'il est effectivement plus long il te faut juste concatener ta clef avec elle même.
Cependant au bout d'un certain nombre de repetition ta clef depassera de beaucoup la taille de ton message. Tu peux regler cela en utilisant seulement un bout de ta string en memorisant sa longeur initiale et en faisant bon usage de la methode substr.
#include<iostream> #include<string> using namespace std; int main() { string clef = "bonjour"; string messageClair = "Salut a tous. Ceci est un test."; while (clef.length()<messageClair.length()) { clef +=clef; cout << messageClair <<endl; cout << clef <<endl<<endl; } cout << messageClair <<endl; cout << clef <<endl; return 1; }
Cependant au bout d'un certain nombre de repetition ta clef depassera de beaucoup la taille de ton message. Tu peux regler cela en utilisant seulement un bout de ta string en memorisant sa longeur initiale et en faisant bon usage de la methode substr.
#include<iostream> #include<string> using namespace std; int main() { string clef = "bonjour"; string messageClair = "Salut a tous. Ceci est un test."; int tailleClefOriginale = clef.length(); //string.length() te permet d'obtenir la longeur d'une string. while (clef.length()<messageClair.length()) //tu testes si la clef est plus petite que le message { clef += clef.substr(0,tailleClefOriginale); //Tu concatene la clef avec la clef originale. strind.substr(int,int) permet de //recuperer un bout de chaine le premier int definnissant la position a partir de //laquelle on recupere et le second le nombre de caractere recuperer (s'il n'est //pas defini il recupere du caractère defini comme depart a la fin de la chaine). cout << messageClair <<endl; cout << clef <<endl<<endl; } cout << messageClair <<endl; cout << clef <<endl; return 1; }