begin process at 2012 02 13 00:30:30
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Cryptage RSA, problème pour x^y mod z


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Cryptage RSA, problème pour x^y mod z

vendredi 21 novembre 2008 à 12:46:49 | Cryptage RSA, problème pour x^y mod z

Shuugeki

Bonjour, j'étudie le C en cours depuis un mois (à raison de 2h par semaine, c'est à dire, trop peu je pense ! ), et j'ai un programme à faire qui réalise un cryptage RSA, puis un décryptage, ceci n'est pas le réel problème. En fait, mon programme tourne (pour le moment je n'ai fait que le cryptage) sauf sur un point, et l'un des plus important, quand il doit faire x^b mod n, avec de gros nombres, par exemple pour l'exposant, on s'attend à ce que cela pose problème, j'ai donc fait une fonction utilisant l'algorithme des carrés et des multiplications pour ne pas être géné sur ce point, et pourtant elle ne fonctionne pas avec de trop gros nombres (J'ai essayé avec 16^32 mod 77, aucun problème, par contre avec 25199^28549 mod 94631, le programme n'affiche pas le bon résultat, et même un nombre négatif : -43965 ! J'ai tout d'abord pensé que le problème venait de la taille de mes variables, des int, mais je ne peux pas utiliser de modulo sur autre chose que des entiers, apparement, donc je ne vois pas comment résoudre ce problème si c'est ça. voici ici ma fonction :

int puis(int x, int y, int z)
{  
    int res = 1;
    while (y > 0)
    {
          if (y%2==1)
          {
                    res = ((res*x)%z);
                    y = y - 1;
          }
          else
          {
                    x = ((x*x)%z);
                    y = y/2;
          }
    }
    return(res);
                   
}

Je pourrais poster le programme entier si nécessaire.
Merci de votre lecture, et des réponses que vous pourrez m'apporter.

Shuu
vendredi 21 novembre 2008 à 14:03:39 | Re : Cryptage RSA, problème pour x^y mod z

rt15

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Bienvenue,

Une réponse rapide...

Les int c'est codé sur 32 bits (Sauf cas rare), et c'est signé, donc ça permet de compter jusqu'à 2147483647.

Le type entier à peu près supporté, c'est le __int64 (Ou un typedef de ce type), qui permettent de compter jusqu'à 9223372036854775807.

Par contre, les processeurs actuels ne sont moins bon avec les __int64 qu'avec les int (Y compris les AMD64 qui font tourner un Windows 32bits... Et les Windows 64 bits se font plutôt rares !) -> Perte de performances.

Si tu as pas mal de temps, tu peux éventuellement regarder du côté de MMX et des SSE, qui sont des extensions au processeurs destinés aux calculs mathématiques. MMX est très répandu, et SSE l'est aussi mais pas forcément en dernière version.
vendredi 21 novembre 2008 à 15:57:30 | Re : Cryptage RSA, problème pour x^y mod z

Shuugeki

Merci beaucoup pour ces informations plus qu'enrichissantes, mais si j'ai bien compris alors, je ne peux pas faire fonctionner mon programme avec de trop grandes puissances / modulo ?
vendredi 21 novembre 2008 à 16:14:50 | Re : Cryptage RSA, problème pour x^y mod z

rt15

Membre Club Administrateur CodeS-SourceS
Bin les capacités du processeur sont effectivement limitées... Si tu mets 2147483647 dans un int et que tu ajoute 2, ça te fais un drôle de résultat...

Il faut faire des codes plus complexes pour aller au delà, par exemple en utilisant la librairie Bignum.
vendredi 21 novembre 2008 à 17:45:05 | Re : Cryptage RSA, problème pour x^y mod z

BruNews

Administrateur CodeS-SourceS
__int64 est ce que produit à tout coup un cpu depuis le 386 (32 bits) pour une multiplication de 2 INT32.

mul ecx
Resultat en EDX:EAX donc 64 bits.

ciao...
BruNews, MVP VC++


Cette discussion est classée dans : problème, programme, int, mod, cryptage


Répondre à ce message

Sujets en rapport avec ce message

problème avec le sous classement [ par LaPatoshe ] Bonjour, j'essaie d'effectuer un sous classement d'une fenêtre de programme de la calculatrice windows en usant de fonctions API.En premier lieu, je r Problème de boucle for [ par blue01 ] Bonjour tout le monde,    je fais actuellement un programme pour résoudre et générer des sudoku pour me faire la main.Mon compilateur compile en c++ ( problème de "cout" [ par infinity7780 ] Bonjour,J'ai acheté et j'ai lu plusieurs chose sur le C++.Mais comme je débute, je doit surement me trompé.Alors voici ma question. est-ce normal que Explication de ce programme [ par bounkolh ] Bonjour est ce que quelqu'un peut m'expliquer le déroulement de ce programme svp? #include #include int main(int argc, char *argv[ ]) { int tube[2 Explication et correction de ce programme [ par bounkolh ] Bonjour, est ce que quelqu'un peut m'aider à expliquer et corriger ce programme svp? #include #include int main(int argc, char *argv[]) { int mon Problème à l'execution [ par echec ] Bonjour,J'ai pris il n'y a pas longtemps un programme c++, recréant le principe du jeu des chiffes et des lettres. Lorsque je le compile, je n'ai aucu Un problème avec les structures en C ??!! [ par IHECinformaticien ] Bonsoir/Bonjour, dans le code source qui suit, j'ai défini un tableau de type structure date( une structure qui contient le jour, le mois et l'année), Problème de comprehension de programme... [ par Fathilde ] Bonjour à tous,Dans le cadre de mon stage je dois faire un programme en C++ (à l'aide de Borland C++) pour identifier des tags RFID, j'utilise pour ce Problème de Link OpenGL [ par drummaniac ] Salut à tous!Encore un problème d'OpenGL...J'ai étudié les textures grâce au fabuleux site NeHe. Mais je voudrais maintenant implanter tout ça dans mo


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,479 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales