Programme chiffrement/déchiffrement RSA [Problème]

Rajiska Messages postés 2 Date d'inscription samedi 16 juin 2012 Statut Membre Dernière intervention 27 juillet 2012 - 27 juil. 2012 à 23:38
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 30 juil. 2012 à 10:50
Salut tous le monde, alors pour commence,r je vous montre mon code.

#include 
#include <string>
#include <rsa.h>

using namespace std;

int main()
{
        Rsa rsa;
        string messageSecret;
        int choix(0);
        int choixCleCryptage(0);
        string messageSecret1("");
        string messageSecret2("");
        string messageSecret3("");
        string messageSecret4("");
        string messageSecret5("");
        string messageCrypte1;
        string messageCrypte2;
        string messageCrypte3;
        string messageCrypte4;
        string messageCrypte5;
        string messageDecrypte;
        string cleCryptage;
        string clePrivee = rsa.clePrivee();
        string clePublique = rsa.clePublique();
        string clePrivee2;
    do
    {

        cout << "Programme de Cryptage / Decryptage en RSA." << endl;
        cout << "" << endl;
        cout << "" << endl;
        cout << "Desirez-vous crypter ou decrypter une chaine de caracteres ?" << endl;
        cout << "" << endl;
        cout << "   1 - Cryptage" << endl;
        cout << "   2 - Decryptage" << endl;
        cout << "" << endl;
        cout << "Choix: ";
        cin >> choix;

        do
        {
            if (choix == 1)
            {
                cout << "Veuillez choisir la longueur de la cle de cryptage." << endl;
                cout << "" << endl;
                cout << "   1 - 128 Bits" << endl;
                cout << "   2 - 256 Bits" << endl;
                cout << "   3 - 512 Bits" << endl;
                cout << "   4 - 1024 Bits" << endl;
                cout << "   5 - 2048 Bits" << endl;
                cout << "" << endl;
                cout << "Choix: ";
                cin >> choixCleCryptage;

                if (choixCleCryptage == 1)
                {
                    rsa.genererCles(128);
                    cout << "Chaine de caracteres a crypter: ";
                    cin >> messageSecret1;
                    messageCrypte1 = rsa.chiffrerAvecClePublique(messageSecret1);
                    cout << "" << endl;
                    cout << "" << endl;
                    cout << "Chaine de caracteres crypte: " << endl;
                    cout << "" << endl;
                    cout << messageCrypte1 << endl;
                    cout << "" << endl;
                    cout << "Crypter une autre chaine:" << endl;
                    cout << "" << endl;
                    cout << "" << endl;
                }
                else if (choixCleCryptage == 2)
                {
                    rsa.genererCles(256);
                    cout << "Chaine de caracteres a crypter: ";
                    cin >> messageSecret2;
                    messageCrypte2 = rsa.chiffrerAvecClePublique(messageSecret2);
                    cout << "" << endl;
                    cout << "" << endl;
                    cout << "Chaine de caracteres crypte: " << endl;
                    cout << "" << endl;
                    cout << messageCrypte2 << endl;
                    cout << "" << endl;
                    cout << "Crypter une autre chaine:" << endl;
                    cout << "" << endl;
                    cout << "" << endl;
                }
                else if (choixCleCryptage == 3)
                {
                    rsa.genererCles(512);
                    cout << "Chaine de caracteres a crypter: ";
                    cin >> messageSecret3;
                    messageCrypte3 = rsa.chiffrerAvecClePublique(messageSecret3);
                    cout << "" << endl;
                    cout << "" << endl;
                    cout << "Chaine de caracteres crypte: ";
                    cout << "" << endl;
                    cout << messageCrypte3 << endl;
                    cout << "" << endl;
                    cout << "Crypter une autre chaine:" << endl;
                    cout << "" << endl;
                    cout << "" << endl;
                }
                else if (choixCleCryptage == 4)
                {
                    rsa.genererCles(1024);
                    cout << "Chaine de caracteres a crypter: ";
                    cin >> messageSecret4;
                    messageCrypte4 = rsa.chiffrerAvecClePublique(messageSecret4);
                    cout << "" << endl;
                    cout << "" << endl;
                    cout << "Chaine de caracteres crypte: " << endl;
                    cout << "" << endl;
                    cout << messageCrypte4 << endl;
                    cout << "" << endl;
                    cout << "Crypter une autre chaine:" << endl;
                    cout << "" << endl;
                    cout << "" << endl;
                }
                else if (choixCleCryptage == 5)
                {
                    rsa.genererCles(2048);
                    cout << "Chaine de caracteres a crypter: ";
                    cin >> messageSecret5;
                    messageCrypte5 = rsa.chiffrerAvecClePublique(messageSecret5);
                    cout << "" << endl;
                    cout << "" << endl;
                    cout << "Chaine de caracteres crypte: " << endl;
                    cout << "" << endl;
                    cout << messageCrypte5 << endl;
                    cout << "" << endl;
                    cout << "Crypter une autre chaine:" << endl;
                    cout << "" << endl;
                    cout << "" << endl;
                }
                else
                {
                    cout << "Choix incorrect, veuillez reessayer." << endl;
                }

            }
        } while (choixCleCryptage != 1 || choixCleCryptage != 2 || choixCleCryptage != 3 || choixCleCryptage != 4 || choixCleCryptage != 5);

        if (choix == 2)
        {
            cout << "Veuillez entrer la cle de cryptage: " << endl;
            cin >> clePrivee2;
            messageDecrypte = rsa.dechiffrerAvecClePrivee(clePrivee2);
            cout << "Message decrypte: " << clePrivee << endl;
        }
        else
        {
            cout << "Choix invalide, veuillez reessayer." << endl;
        }
    } while (choix != 1 || choix != 2);
    return 0;
}


Mon problème est à partir du choix n°2 pour définir si on souhaite crypter ou décrypter. Quand je selectionne le n°2, il ne se passe rien, le programme reste bloqué.

Une solution ? Merci, bonne soirée.

3 réponses

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
28 juil. 2012 à 20:54
Salut,

Aucune action n'est faite dans ta boucle interne si choix == 2,
essayes donc ceci (rajout du else if):

if (choix == 1)
{
    // (...)
}
else if( choix == 2 )
    break;


bye...
0
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
30 juil. 2012 à 08:43
Bonjour,
Juste une remarque, je transformerai pour plus de lisibilité tous ces if , else if en switch. Cela te permettra de relire plus facilement ton code et de voir les cas que tu n'as pas traité.


louis
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
30 juil. 2012 à 10:50
Bonjour.

Merci de ne pas recréer de sujet, mais de continuer cette discussion si ça concerne toujours le même problème.

Quelques remarques:
- On dit chiffrement/déchiffrement et non cryptage/décryptage (ce n'est pas pareil ! Décryptage ne veut d'ailleurs rien dire...). J'ai mis à jour ton titre.
- Évite les "using namespace", voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace
- Pluôt que de faire des if ou même un switch, il faut faire les choses un peu plus intelligemment.

Au lieu de faire:
if (choixCleCryptage == 1)
{
  rsa.genererCles(128);
  //...
}
if (choixCleCryptage == 2)
{
  rsa.genererCles(256);
  //...
}
//etc...


Je ferais directement:
  rsa.genererCles(std::pow(2, choixCleCryptage + 6) ;


________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
Rejoignez-nous