comment utilisé la bibliothéque gmp sous windows - C++ - Programmation
Marsh Posté le 19-04-2005 à 17:31:52
la biblio gmp.h est destinée pour linux mais on peut l'utiliser sous windows avec des conditions tq l'utilisation des dlls specifiques
j'ai ces dlls et le gmp.h mais et je fait include "gmp.h" mais j'ai des erreur ??????????
Marsh Posté le 19-04-2005 à 18:35:47
C'est quoi les erreurs ?
Si tu utilises la dll de façon statique, tu as rajouté la librairie d'import lors du linkage ?
Marsh Posté le 19-04-2005 à 19:24:38
des erreur de type:
__gmp_set_memory function is not parameter
ils ont me dit que c'est a cause non reconnaissace de la dll
Marsh Posté le 19-04-2005 à 21:06:28
Je crois que je comprend pas ce que tu dis
Il te dit la ligne de l'erreur ?
Tu peux montrer un peu ton code ?
Marsh Posté le 20-04-2005 à 02:32:52
salut
je ne sais pas si cela peu t'aider mais jette y un oeil (facon de parler of course )
http://www.cs.nyu.edu/exact/core/gmp/
Marsh Posté le 20-04-2005 à 10:43:05
oui voilà le dode
#include <stdio.h>
#include "gmp.h"
/* Variable d'état pour le générateur aléatoire */
gmp_randstate_t etat;
/* Fonction aleatoire
renvoie un grand nombre aléatoire qui a env. taille chiffres */
void aleatoire(mpz_t nombre, int taille)
{
unsigned long int i;
mpz_t deuxn;
mpz_init(deuxn);
i = (taille+1)*4;
/* Calcul un nombre aléatoire entre 0 et 10^(n+1) */
mpz_urandomb(nombre, etat, i);
/* Résultat minimum: 10^taille */
mpz_ui_pow_ui(deuxn, 10, taille);
/* Ajoute les deux résulats */
mpz_add(nombre,nombre,deuxn);
mpz_clear(deuxn);
}
/* Fonction premier */
void premier(mpz_t premier, int taille)
{
/* Prend un nombre au hasard de taille donnée */
aleatoire(premier, taille);
/* Prend le nombre premier qui suit notre nombre au hasard */
mpz_nextprime(premier, premier);
}
/* Fonction phi
calcule phi(pq)=(p-1)(q-1) */
void calculephi(mpz_t phi, mpz_t p,mpz_t q)
{
mpz_t a;
mpz_t b;
mpz_init_set(a, p);
mpz_init_set(b, q);
mpz_sub_ui(a, a, 1);
mpz_sub_ui(b, b, 1);
mpz_mul(phi, a, b);
mpz_clear(a);
mpz_clear(b);
}
void cles(mpz_t a, mpz_t b, mpz_t p, mpz_t q, int taille)
{
mpz_t phi;
mpz_t temp;
mpz_init(phi);
mpz_init(temp);
/* Calcul de phi */
calculephi(phi,p,q);
/* Choix de a, clé publique, avec (a,phi(n))=1 */
do {
aleatoire(a, taille);
mpz_gcd(temp, a, phi);
} while (mpz_cmp_ui(temp,1)!=0);
/* Calcul de b, clé privée correspondante */
mpz_invert(b, a, phi);
}
int main() {
int taille;
unsigned long int graine;
mpz_t n,p,q,phi,a,b, clair, code, resultat;
mpz_init(p);
mpz_init(q);
mpz_init(n);
mpz_init(a);
mpz_init(b);
mpz_init(clair);
mpz_init(code);
mpz_init(resultat);
printf("Graine pour le générateur aléatoire ? " );
scanf("%d",&graine);
printf("Taille de p et q ? " );
scanf("%d",&taille);
gmp_randinit(etat, GMP_RAND_ALG_DEFAULT);
gmp_randseed_ui(etat, graine);
mpz_urandomb(clair, etat, 10);
/* Choix de p et de q différents l'un de l'autre */
do {
premier(p, taille);
premier(q, taille);
} while (mpz_cmp(p, q)==0);
/* Calcul de n */
mpz_mul(n,p,q);
/* Calcul des clés */
cles(a,b,p,q, taille);
/* Affichage de p,q,n,a,b */
printf("\n\nParamètres de chiffrement :\n\n" );
printf("p = " ); mpz_out_str(stdout, 10, p); printf("\n" );
printf("q = " ); mpz_out_str(stdout, 10, q); printf("\n" );
printf("n = " ); mpz_out_str(stdout, 10, n); printf("\n" );
printf("a = " ); mpz_out_str(stdout, 10, a); printf("\n" );
printf("b = " ); mpz_out_str(stdout, 10, b); printf("\n" );
printf("\n\n" );
/* Choix d'un message aléatoire et impression */
aleatoire(clair, taille);
printf("Message à chiffrer: " ); mpz_out_str(stdout, 10, clair); printf("\n" );
/* Calcul du message chiffré et impression */
mpz_powm(code, clair, a, n);
printf("Message chiffré: " ); mpz_out_str(stdout, 10, code); printf("\n" );
/* Calcul du message déchiffré et impression */
mpz_powm(resultat, code, b, n);
printf("Message déchiffré: " ); mpz_out_str(stdout, 10, resultat); printf("\n" );
}
Marsh Posté le 20-04-2005 à 20:13:47
Reply
Marsh Posté le 19-04-2005 à 16:12:32
Bonjour
j'ai la bibliotheque gmp.h et les dlls de platforme deja extractés pour windows et je veux les utilisés pour un programme écrit en Borland C++ aidé moi pour l'utilisation,l'emplacement des fichiers et la liaisons de bibliotheque dynamique avec mon programme, si vous êtes deja passer par cette étape.
merci
---------------
oualataSoft