begin process at 2010 02 10 08:51:37
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Algorithme

 > 

Compression, Split et Cryptage

 > 

Algorithme RSA


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

Algorithme RSA

jeudi 2 avril 2009 à 00:28:53 | Algorithme RSA

douss4

Bonsoir,

J'ai essayé d'écrire un algorithme de cryptage (RSA). Le code à bien marché avec des int. J'ai changé les int par des float. Au moment du décryptage la console m'affiche un zéro. Le problème se trouve au niveau de la ligne suivnte : "*M=fmod((*M*C),n);"

Voici mon code :


#include<stdio.h>
#include<conio.h>
#include<math.h>


float pgcd(float x, float y)
{
 float r;

 while(y!=0)
 {
  r=fmod(x,y);
  x=y;
  y=r;
 }

 return x;

}

int check_prime_number(float x)
{
 float sqrt_n;
 int i;

 if (!fmod(x,2)) return 0;

 sqrt_n = sqrt(x);

  for (i = 3; i <= sqrt_n; i+=2) {
    if (!fmod(x,i)) return 0;
  }
  return 1;
}

int check_e(float PHI,float e,float p,float q)
{

 if((pgcd(PHI,e)==1)&&(e<PHI)&&(e!=p)&&(e!=q))
 return 1;
 else return 0;
}

float find_d(float PHI, float E)
{
 float d=1;

 while(fmod((E*d),PHI)!=1)
 {
  d++;
 }


 return d;
}

void encrypt(float M, float *C, float e, float n)
{
int i;
*C = 1;
for(i=0;i<e;i++)
*C=fmod((*C*M),n);
*C = fmod(*C,n);

}


void decrypt(float C, float *M, float d, float n)
{
int i;
*M = 1;
for(i=0;i<d;i++)
{
 *M=fmod((*M*C),n);
}
*M = fmod(*M,n);

}


void main()
{
 float M,c,f,p,q,n,phi,e,d;

 do
 {
  printf("\nDonner p (naturel premier) : ");
  scanf("%f",&p);
 }while(check_prime_number(p)==0);

 do
 {
  printf("\nDonner q (naturel premier) superieur a %.0f: ",p);
  scanf("%f",&q);
 }while((check_prime_number(q)==0)||(q<=p));


 printf("\nEnter votre cle : ");
 scanf("%f",&M);

 n = p*q;
 phi=(p-1)*(q-1);

 do
 {

  printf("\nDonner e (phi = %.0f ): ",phi);
  scanf("%f",&e);

 }while(check_e(phi,e,p,q)==0);

 encrypt(M,&c,e,n);

 printf("\nCle cryptee : %.0f",c);

 printf("\n\nEntrer la cle cryptee : ");
 scanf("%d",&c);

 d=find_d(phi,e);

 decrypt(c,&f,d,n);
 printf("\nCle decryptee : %.0f",f);
 getch();
}


Merci d'avance
jeudi 2 avril 2009 à 08:49:21 | Re : Algorithme RSA

titeoe

c'est du C# ca ? c'est pas plutot du CPP ?
jeudi 2 avril 2009 à 10:27:52 | Re : Algorithme RSA

LordOfTheShadow

remplace deja tes scanf par Console.Readline() et printf par Console.WriteLine()
Les pointeurs sont directement géré par C#

La connaissance est la plus grande des richesses.

jeudi 2 avril 2009 à 10:49:30 | Re : Algorithme RSA

krimog

"remplace deja tes scanf par Console.Readline() et printf par Console.WriteLine()
Les pointeurs sont directement géré par C#"

En l'occurrence, c'est purement du C. (Pas loin Titeoe, mais en C++, on ne marque pas le .h dans les librairies et on utilise cout ou cin à la place de printf ou scanf)

Voilà un truc que j'ai trouvé sur un site :

Portability (fmod)

In C, only the double version of this function exists with this name.

Je suppose que ce n'est pas le problème, car les compilateurs C compilent généralement le C++ aussi, mais tu peux toujours regarder.

Ne connaissant absolument pas l'algorithme RSA, je ne peux pas plus t'aider, dsl.

Krimog :
while (!succeed = try()) ;

jeudi 2 avril 2009 à 11:04:15 | Re : Algorithme RSA

douss4

Merci beaucoup, mais je me suis trompée en choisissant le forum. Encore désolée de vous avoir dérangé.


Cette discussion est classée dans : int, return, fmod, float, phi


Répondre à ce message

Sujets en rapport avec ce message

prob chargement dll/conversion de type cpp/c# [ par davtemp ] bonjour,J'ai un programme en cpp 6.0 qui charge une dll compilée aussi en cpp 6.0. Mon programme fonctionne bien et j'en suis bien content, sauf que l Icomparer & DataGridView [ par Moomoon07 ] Salut à tous !Voila que je galère encore et toujours avec mon Icomparer.J'ai un datagridview qui contient dans sa 2ème colonne des dates (dd/mm/aaaa). Tutoriel classes et programmation objet [ par olibara ] Bonjour Je developpe depuis qq semaine en Csharp et je trouve ce langauage tres agréable et puissant. Je pense maitriser déja pas mal de choses Cepe float : HELP [ par cedoli ] Petite question :private int deplx = 1450;private int flag = 750;private float test;test = flag/deplx;Il me dit que test vaut 0 (je suppose qu'il arro impression [ par panpan49 ] Bonjour, j'essaie d'imprimer une texte box en c#, j'arrive un imprimer, mais le problème est qu'il m'imprime les deux pages que j'ai taper, sur une se convertir object en int [ par kooljy ] Bonjour,Pour convertir un object en int?je suis obligé de le convertir en string avant.Ca marche que comme ca :mon object s'appelle varint i = Int32.P tester la connection a une base de données [ par jul00 ] salut voila je voudrai tester la connection à ma base de donnée dans une fonction mais ça marche pas.voila un ti bout de code************************* Inserer un float dans une base de donnée [ par Rapace ] Bonjour à tous,Voici mon problème, quand je veux inserer un float dans ma base de donnée, ça ne fonctionne pas.par ex: price=0,5  => il ne veut pas a Un bloc de code simple qui ne marche pas comme je l'entend [ par chandler8692 ] Salut. J'ai un problème avec un bloc de code dans mon programme. Je veux créer une liste clée[256] contenant tous les nombres de 0 à 255, chacun une e creer un picture box [ par jul00 ] je voidrait creer des picture box qui representrons des tables(de restaurent). Le code est simplifié là, à la fin je voudrais metre ça dans une boucle


Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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 : 0,562 sec (4)

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