begin process at 2012 02 09 01:03:29
  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

Administrateur CodeS-SourceS
"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 comment créer des ellipses [ par ami7 ] bonsoir, je cherche à créer des ellipses pour mon application j'ai trouvé le code ci dessu mais je ne sais pas comment l'intégrer pour que les ellips comment se connecter à une base de données sql server et y insérer des valeurs via des champs textBox . [ par eyya ] Bonjour Je suis en train de crée un programme de test qui permet d'accéder à une base de données sql server et d'y insérer des valeurs à partir des Trouver tous les pixels noire dans une image binaire trés grande [ par issam414 ] Bonjour à tous, je débute dans la programmation en c# et je suis déjà perdu, pourtant ça me parait simple comme question [^^peur] . alors, j'ai une i Appliquer le focus sur deux fenetres... [ par Razordj ] Mon programme a une "Form" primaire (Form1), et un sous-form (Form2). Le haut de form2 est attaché au bas de Form1. Form2 est ne peut etre minimizé p Scanneur d'ip [ par Bentouate ] Bonjour ! :) J'ai hésité à poster ce post dans réseau & internet ... j'espere que je me suis pas trompé ^^' Mon objectif : créer une application qui


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 1,232 sec (4)

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