Bonsoir !
Voilà voilà ! En cherchant par ci par là , il y a un programme qui m'a pas laissé indifférent , c'est celui du cryptage/décryptage !
Par contre , lorsque j'essaie d'en faire 1 , je bloque et je ne sais pas par ou m'y prendre !
J'ai trouvé un énoncé sur le net expliquant ce que je veux faire :
Réaliser un programme qui crypte ou décrypte un message secret avec une clé secrète k numérique suivant une méthode simple le chiffre de César.
Le principe est simple : remplacer chaque lettre du message d'origine par la lettre qui se trouve k places plus loin (quand k est positif) dans l'alphabet. Par exemple, la lettre 'b' est remplacée par 'd' si k=2. La seule complication tient au fait que quand on arrive à la fin de la liste, ce qui dépasse se retrouve de l'autre côté (toujours avec k=2)
clair : ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
crypté : CDEFGHIJKLMNOPQRSTUVWXYZAB cdefghijklmnopqrstuvwxyzab
Donc ici , on tape l'alphabet et cela nous sort cet alphabet mais avec un décalage de k=2 ..
Puis le site donne comme explication :
En effet, si k<0 alors k modulo 26 donne une valeur équivalente vis-à-vis du codage dans l'intervale [-25 ; 0], et si on lui rajoute 26, on arrive dans l'intervale [1 ; 26] c'est-à-dire qu'on a transformé notre décalage négatif en un décalage positif qui a le même effet. Par exemple, si le décalage était -28 (qui transforme 'C' en 'A'), -28 modulo 26 donne -2 (qui transforme lui aussi 'A' en 'A'), et -28 module 26 + 26 donne 24 (qui lui aussi transforme 'C' en 'A'),
La deuxième étape suppose que k est positif (ce qui est toujours le cas grâce à la première ligne). On soustrait du code ASCII de c (par exemple, 98 pour 'b') la valeur du code ASCII de 'a' (97) afin d'obtenir la position de la lettre dans l'alphabet (puisqu'on commence à compter à 0, pour 'b', cela donne 1). Ensuite, on ajoute k pour décaler, et grâce au modulo, on reste dans [0 ; 25]. Il ne reste plus qu'à se remettre dans les lettres minuscules en ajoutant le code ASCII de 'a'.
On doit se servir de la fonction getline() :
Voilà voilà .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <code type="cpp">int main() { string message; // Définit une variable pour stocker la chaine du message. int k; // Définit une variable entière pour la clé de cryptage/décryptage. cout<<"Donnez le message à crypter >"; // On affiche la demande (sans passer à la ligne). getline(cin,message); // Demande le message complet à l'utilisateur. cout<<"Donnez la clé numérique de cryptage/décryptage >"; cin>>k; ... // Vos opération de cryptage/décryptage ici/ cout<<"Le message crypté/décrypté est :" << endl << message << endl; return 0;</code>
Comment dois-je m'y prendre selon vous ? Une utilisation de tableau ? Ou bien ?
Merci d'avance
Partager