Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

DETERMINATION DE CLÉ RSA


Information sur la source

Catégorie :Sécurité & Cryptage Classé sous : clé, rsa, cryptage, clef, clépublique Niveau : Initié Date de création : 23/02/2003 Date de mise à jour : 23/02/2003 10:43:31 Vu : 4 347

Note :
Aucune note

Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

Description

ce code permet de déterminer des valeurs de N ainsi que des clefs publiques et privées adaptées.
vous pouvez utiliser ce code afin d'obtenir des clefs pour l'autre source que j'ai mis sur ce site :
cryptage a clé publique
 

Source

  • #include <iostream.h>
  • #include <stdlib.h>
  • #include <stdio.h>
  • #include <math.h>
  • int verif_premier (unsigned long int data);
  • void main()
  • {
  • int i=1,a=1,b=1,c=1,k=0;
  • unsigned long int n,nb1,nb2,nb3,ea,da,phin,tmp2;
  • double tmp1;
  • while(a==1)
  • {
  • printf("\ntaper un premier nombre premier :");
  • scanf("%ld",&nb1);
  • a=verif_premier(nb1);
  • }
  • while(b==1)
  • {
  • printf("\ntaper un deuxieme nombre premier :");
  • scanf("%ld",&nb2);
  • b=verif_premier(nb2);
  • }
  • while(c==1)
  • {
  • printf("\ntaper un troixieme nombre premier :");
  • scanf("%ld",&nb3);
  • c=verif_premier(nb3);
  • }
  • n = nb1*nb2*nb3;
  • phin = (nb1-1)*(nb2-1)*(nb3-1);
  • printf("\nphin est : %ld",phin);
  • printf("\n\ntaper EA premier avec phin:");
  • while(i==1)
  • {
  • scanf("%ld",&ea);
  • if(phin % ea == 0)
  • {i=1;printf("\nEA n'est pas premier avec phin, tapez un autre ea :");}
  • else {i=0;}
  • }
  • for(k=1;k<phin;k++)
  • {
  • tmp1 = ((1+(k*phin*1.0))/ea) ;
  • tmp2 = (unsigned long int) tmp1;
  • if ((tmp1-tmp2)==0)
  • {break;}
  • }
  • da = tmp2;
  • //printf("\nN est : %ld, phin est : %ld, Ea est : %ld, Da est : %ld, k est : %d \n\n",n,phin,ea,da,k);
  • printf("\n N est : %ld, Ea est : %ld, Da est : %ld\n\n",n,ea,da);
  • system("PAUSE");
  • }
  • int verif_premier (unsigned long int data)
  • {
  • double tmp;
  • unsigned long int tmp2;
  • int val;
  • for(int j=2;j<data;j++)
  • {
  • tmp = ((data*1.0)/j);
  • tmp2 = (unsigned long int) tmp;
  • if ((tmp-tmp2)==0)
  • {
  • val=1;
  • printf("ce nombre n'est pas premier!");
  • break;
  • }
  • else {val=0;}
  • }
  • return (val);
  • }
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>

int verif_premier (unsigned long int data);

void main()
    {
    int i=1,a=1,b=1,c=1,k=0;
    unsigned long int n,nb1,nb2,nb3,ea,da,phin,tmp2;
    double tmp1;
    while(a==1)
               {
               printf("\ntaper un premier nombre premier :");
               scanf("%ld",&nb1);
               a=verif_premier(nb1);
               }
    while(b==1)
               {
               printf("\ntaper un deuxieme nombre premier :");
               scanf("%ld",&nb2);
               b=verif_premier(nb2);
               }
    while(c==1)
               {
               printf("\ntaper un troixieme nombre premier :");
               scanf("%ld",&nb3);
               c=verif_premier(nb3);
               }
    n = nb1*nb2*nb3;
    phin = (nb1-1)*(nb2-1)*(nb3-1);
    printf("\nphin est : %ld",phin);
    printf("\n\ntaper EA premier avec phin:");
    while(i==1)
               {
               scanf("%ld",&ea);
               if(phin % ea == 0)
                      {i=1;printf("\nEA n'est pas premier avec phin, tapez un autre ea :");}
               else   {i=0;}
               }
    for(k=1;k<phin;k++)
               {
               tmp1 = ((1+(k*phin*1.0))/ea) ;
               tmp2 = (unsigned long int) tmp1;
               if ((tmp1-tmp2)==0)
                  {break;}
               }
    da = tmp2;
    //printf("\nN est : %ld, phin est : %ld, Ea est : %ld, Da est : %ld, k est : %d  \n\n",n,phin,ea,da,k);
    printf("\n N est : %ld, Ea est : %ld, Da est : %ld\n\n",n,ea,da);
    system("PAUSE");

    }

int verif_premier (unsigned long int data)
    {
    double tmp;
    unsigned long int tmp2;
    int val;
    for(int j=2;j<data;j++)
            {
            tmp = ((data*1.0)/j);
            tmp2 = (unsigned long int) tmp;
            if ((tmp-tmp2)==0)
               {
               val=1;
               printf("ce nombre n'est pas premier!");
               break;
               }
            else {val=0;}
            }
    return (val);
    }

Commentaires et avis

signaler à un administrateur
Commentaire de kjus le 23/02/2003 22:01:40

salut,
Juste quelques conseils pour améliorer le code :
-Pour tester la primalité de ton nombre (data), il suffit de tester les division de 2 à racine de data inclus. (#include &lt;math.h&gt;, sqrt(data) );
- je vois que pour convertir data en float, tu multiplies par 1.0. tu peux faire static_cast&lt;float&gt; (data) pour la convertir en float le temps de la division.
- Au lieu de diviser en float, puis de reconvertir en long, il vaut mieux faire le test :
if (data % j ==0) {
val=1;
printf("..");
break;
}
- En C++, utiliser le type bool (false ou true) rend le prgm plus clair (je pense pour la valeur de retour de verif_premier).
raph
  

signaler à un administrateur
Commentaire de tavernier le 24/02/2003 12:28:59

pour tester la primalité.
Ton code regarde tout d'abord s'il est divisible par deux (donc s'il est pair). Si la boucle continue, c'est qu'il ne l'est pas, donc il ne peut etre divisible par aucun nombre pair (tu testes pourtant tous les nombes inférieurs a data).
Personnellement à la place de j++, je mettrais j==2?j++:j+=2;

Voila
julien

signaler à un administrateur
Commentaire de Sensei01 le 24/02/2003 18:36:46

c vrai, ce code n'est pas idéal, mais je l'ai tapé en vitesse car j'en avais besoin.
....

signaler à un administrateur
Commentaire de coucou747 le 04/07/2004 19:31:02

pour la boucle de 2 a la racine carrée, vous n'avez pas besoin de la librairie math.h
de 2 a racine de b
for (a=2, a*a&lt;b+1; a++){
    if (b%a==0){
      nombre qui n'est pas premier
   }
}

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Le cryptage par MD5 de RSA [ par LSRS ] Salut tout le monde...J'ai un très grand problème avec l'algorithme de hachage MD5 qui réprésente le squelette de mon stage d'été... Je n'arrive pas à cryptage RSA [ par moicmoi ] Bon je me doute que je vais passer pour un boulet mais j'aurai besoin avant jeudi d'un code source du cryptage RSA en LANGAGE C. Mais un code tout si Cryptage RSA [ par ritchie00 ] Salut,Qqun saurait où je peux trouver une API C++ de chiffrement/dechiffrement RSA, qui marcherait avec des certificats et des tailles de clés paramét nombre de bits pour un cryptage RSA [ par vodkapomme43 ] Bonjour,J'ai juste une petite question: &#224; partir de combien de bits peut-on dire que le cryptage RSA est assez s&#251;r (pas cassable facilement) CRyptage RSA 2048 [ par clem0338 ] Bonjour, j'ai lu dans le forum et dans les sources qu'il existe une librairie pour les des calcules sur des "grand nombre" (GMP, PARI, ...) j'aimerais cryptage avec 3 clefs [ par logant83 ] Bonjour; voila enfaite j'aimerai savoir si vous savez comment je pourrai faire pour crypter une chaine de caractère avec une base 64 mais crypter cett Longueur clé cryptage et longueur mot de passe [ par daniel50171 ] Bonsoir à tous,J'ai lu la réponse de Alexander à un internaute qui soutenait, que selon son prof d'informatique, un mot de passe crypté en AES 128 bit cryptage a clé symétrique (DES, AES ou bien triples DES .. etc) [ par aefmaaradji ] Bonjour,je veut savoir si il existe des application dans le C++/CLI .net qui fait le cryptage a clé symétrique ou bien si vous avez une information su Clef d'activation [ par Gadji ] Bonjour, J'aimerai limiter l'utilisation de mon programme à une personne par clé mais je ne sais pas comment faire.En fait, une clef serait associé à Des problèmes à propos du cryptage RSA [ par primaxj2m1 ] Bon je sais que c'est pas une question de code, mais je vous la pose quand m&#234;me: Bon voil&#224;, je suis &#233;tudiant en &#233;change au Canada


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version


HTC G1

Entre 449€ et 449€


Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,593 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.