J'ai un petit ennui avec scanf (non, pas le pointeur dedans).
Le dernier scanf parmi trois ne marche pas, sauf si je le fais suivre par un scanf bidon. Il me colle la valeur 0 à la variable expo si je n’ajoute pas le scanf bidon avec k.
Ce qui est bizarre, c’est que même en ajoutant à la main expo=11 (ligne commentée), expo reste nul tant que le scanf bidon n’est pas là.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int puissance(int N, int p, int e) // p^e modulo N
{
int z, i;
z=1;
for (i=1;i<=e;i++)
{
z*=p;
z%=N;
}
return z;
}
int main(int argc, char *argv[])
{
srand (time (NULL));
int base,pi,expo,k,pie;
char message;
int premier, deuxieme; //Premier et deuxième nombres transmis
printf("Entrer la base ");
scanf("%d",&base);
printf("Entrer la perturbation ");
scanf("%d",&pi);
printf("Entrer l’exposant ");
scanf("%d",&expo);
scanf("%i",&k); // scanf bidon
// expo=11;
while(1)
{
printf("Entrer la lettre à coder ");
scanf("%s",&message);
k=1+(rand() % (base-1));
premier=puissance(base,pi,k);
printf("%i\n",expo);
pie=puissance(base,pi,expo);
printf("pi^e=%i\n",pie);
deuxieme=((message-96) * puissance(base,pie,k)) % base;
printf("Le code est (%i,%i).\n",premier,deuxieme);
}
return 0;
}
Oui, c’est de la cryptographie (petite).
Si quelqu’un voit ce qui se passe… Je subodore un problème avec utf8, mais pourtant quand je mets des caractères typiquement utf8 dans les printf (comme un beta), tout va bien.
--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-