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

Signaler
Messages postés
2
Date d'inscription
samedi 16 juin 2012
Statut
Membre
Dernière intervention
27 juillet 2012
-
Messages postés
3833
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
-
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

Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
24
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...
Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
8
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
Messages postés
3833
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
122
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