Chifrement RSA
Résolu
narimon
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
c'est pour le chifrrement RSA
svp j'ai un probléme c'est quand je tape 2 pour chiffer un texte sa marche pas il maffiche pour le chifrrement pour un entier
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int p,q,n,Fi,e,a,r,m,c,o,b,h,g,k,i,s,f,j,l,u,v;
printf("entrée la valeur du nombre premier p= ");
scanf("%d",&p);
printf("\nentrée la valeur du nombre premier q=");
scanf("%d",&q);
n=p*q;
printf("\n la valeur de n est égale= %d ",n);
Fi =(p-1)*(q-1);
printf("\n la valeur de la fonction d'euler Fi est égale= %d ",Fi);
for(e=2;e<Fi;e++)
{
a=Fi;b=e;
while(b!=0)
{
r=a%b;
a=b;
b=r;
}
if(a==1) break;
}
printf("\n la valeur de e est égale= %d \n",e);
printf("\npour chiffrer un entier quelconque taper 1\n");
printf("\npour chiffrer un text taper 2\n");
scanf("%i",&h);
if(h=1)
{
printf("\n\n entrée la valeur du message m: ");
scanf("%d",&m);
o=pow(m,e);
c=o%n;
printf("\n\nla valeur de c est: %d \n",c);
}
if(h=2)
{
int x[100],y[100];
char d[100];
printf("\n\ndonne la valeur de g: ");
scanf("%d",&g);
k=(int)((log(n))/(log(g)));
printf("\n\nla valeur de k est: %d \n",k);
printf("\n\ndonne le mot:");
for(i=0;i<k;i++)
{
printf("lettre %d : ", i);
scanf("%s", &t[i]);
}
for(i=0;i<=k;i++)
{
if(d[i]== 'A') {x[i]=0;}
if(d[i]== 'B'){x[i]=1;}
if(d[i]== 'C') {x[i]=2;}
if(d[i]== 'D') {x[i]=3;}
}
printf("\n\nla covertion donne :");
for(i=0;i<k;i++)
{
printf("%d/",x[i]);
}
a=r=o=0;
for(i=1;i<=k;i++)
{
a=k-i;
r=pow(g,a);
o=x[i-1]*r;
s=s+o;
}
m=s;
printf("\n\nla valeur de m est : %d", m);
o=0;
o=pow(m,e);
c=o%n;
printf("\n\nla valeur de c est: %d",c);
o=((log(c))/(log(g)));
f=o+1;
printf("\n\nf est egal a: %d ", f);
s=v=j=l=u=h=p=a=0;
for (i=1; i<=f; i++)
{
v=f-i;
j=i-1;
u=f-j;
h=a*(pow(g,u));
s=s+h;
l=c-s;
a=l/(pow(g,v));
y[i]=a;
}
printf("\n\nla covertion donne :");
for (i=1; i<=f; i++)
{
printf("%d", y[i]);
}
for(i=1;i<=f;i++)
{
if(y[i]== 0) t[i]='A';
if(y[i]== 1) t[i]='B';
if(y[i]== 2) t[i]='C';
if(y[i]== 3) t[i]='D';
}
printf("\n\nle mot donne :");
for(i=1;i<=f;i++)
{
printf("%s",&t[i]);
}
}
return 0;
}
merci
c'est pour le chifrrement RSA
svp j'ai un probléme c'est quand je tape 2 pour chiffer un texte sa marche pas il maffiche pour le chifrrement pour un entier
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int p,q,n,Fi,e,a,r,m,c,o,b,h,g,k,i,s,f,j,l,u,v;
printf("entrée la valeur du nombre premier p= ");
scanf("%d",&p);
printf("\nentrée la valeur du nombre premier q=");
scanf("%d",&q);
n=p*q;
printf("\n la valeur de n est égale= %d ",n);
Fi =(p-1)*(q-1);
printf("\n la valeur de la fonction d'euler Fi est égale= %d ",Fi);
for(e=2;e<Fi;e++)
{
a=Fi;b=e;
while(b!=0)
{
r=a%b;
a=b;
b=r;
}
if(a==1) break;
}
printf("\n la valeur de e est égale= %d \n",e);
printf("\npour chiffrer un entier quelconque taper 1\n");
printf("\npour chiffrer un text taper 2\n");
scanf("%i",&h);
if(h=1)
{
printf("\n\n entrée la valeur du message m: ");
scanf("%d",&m);
o=pow(m,e);
c=o%n;
printf("\n\nla valeur de c est: %d \n",c);
}
if(h=2)
{
int x[100],y[100];
char d[100];
printf("\n\ndonne la valeur de g: ");
scanf("%d",&g);
k=(int)((log(n))/(log(g)));
printf("\n\nla valeur de k est: %d \n",k);
printf("\n\ndonne le mot:");
for(i=0;i<k;i++)
{
printf("lettre %d : ", i);
scanf("%s", &t[i]);
}
for(i=0;i<=k;i++)
{
if(d[i]== 'A') {x[i]=0;}
if(d[i]== 'B'){x[i]=1;}
if(d[i]== 'C') {x[i]=2;}
if(d[i]== 'D') {x[i]=3;}
}
printf("\n\nla covertion donne :");
for(i=0;i<k;i++)
{
printf("%d/",x[i]);
}
a=r=o=0;
for(i=1;i<=k;i++)
{
a=k-i;
r=pow(g,a);
o=x[i-1]*r;
s=s+o;
}
m=s;
printf("\n\nla valeur de m est : %d", m);
o=0;
o=pow(m,e);
c=o%n;
printf("\n\nla valeur de c est: %d",c);
o=((log(c))/(log(g)));
f=o+1;
printf("\n\nf est egal a: %d ", f);
s=v=j=l=u=h=p=a=0;
for (i=1; i<=f; i++)
{
v=f-i;
j=i-1;
u=f-j;
h=a*(pow(g,u));
s=s+h;
l=c-s;
a=l/(pow(g,v));
y[i]=a;
}
printf("\n\nla covertion donne :");
for (i=1; i<=f; i++)
{
printf("%d", y[i]);
}
for(i=1;i<=f;i++)
{
if(y[i]== 0) t[i]='A';
if(y[i]== 1) t[i]='B';
if(y[i]== 2) t[i]='C';
if(y[i]== 3) t[i]='D';
}
printf("\n\nle mot donne :");
for(i=1;i<=f;i++)
{
printf("%s",&t[i]);
}
}
return 0;
}
merci
A voir également:
- Chifrement RSA
- Forfait internet rsa orange - Accueil - Box & Connexion Internet
- Rsa vinted - Guide
- SVP! aidez moi !!cryptage décryptage RSA NTL - Forum Programmation
1 réponse
Bonjour,
J'ai pas tout lu car le code est illisible.
La prochaine fois, merci de mettre ton code dans une balise "code" (à droite du bouton souligné"), cela gardera l'indentation. Par ailleurs, l'usage de fonctions est vivement conseillée.
Sinon, de ce que j'ai vu : if(h=1). L'opérateur de comparaison est == et non =. Le programme rentrera donc systématiquement dans toutes les conditions if.
Corrige-ça déjà, cela devrait être beaucoup mieux.
Sinon, rien à voir mais pourquoi mélanger "%d" et "%i" ?
J'ai pas tout lu car le code est illisible.
La prochaine fois, merci de mettre ton code dans une balise "code" (à droite du bouton souligné"), cela gardera l'indentation. Par ailleurs, l'usage de fonctions est vivement conseillée.
Sinon, de ce que j'ai vu : if(h=1). L'opérateur de comparaison est == et non =. Le programme rentrera donc systématiquement dans toutes les conditions if.
Corrige-ça déjà, cela devrait être beaucoup mieux.
Sinon, rien à voir mais pourquoi mélanger "%d" et "%i" ?