miércoles, 26 de mayo de 2010

Llaves.c

#include
#include
#include

char *cifra(char *m,mpz_t exp, mpz_t mod){
    mpz_t mens;
    mpz_init(mens);
    mpz_set_str(mens,m,10);
    printf("\n%s\n",mpz_get_str(NULL,10,mens));
    mpz_powm(mens,mens,exp,mod);
    return mpz_get_str(NULL,10,mens);
}

int main(int argv, char* argc[]){
    mpz_t n,p,q,e,d,phi,uno;
    unsigned long int l;
    int test;
    char *p_str,*q_str;
    srandom(time(NULL));
    mpz_init(n);
    mpz_init(p);
    mpz_init(q);
    mpz_init(e);
    mpz_init(d);
    mpz_init(phi);
    mpz_init(uno);
    l=random()%100;
    //sscanf(argc[1],"%d",&l);
    l=133;
    //l=;
    if(l<0){l=50;}
    mpz_ui_pow_ui(p,l+random()%30,l+random()%30);
    mpz_nextprime(p,p);
    l=random()%100;

    mpz_ui_pow_ui(q,l+random()%30,l+random()%30);
    mpz_nextprime(q,q);
   
    p_str=mpz_get_str(NULL,10,p);
    q_str=mpz_get_str(NULL,10,q);

    //printf("p: \n%s\n",p_str);
    //printf("q: \n%s\n",q_str);

    mpz_sub_ui(e,p,1);
    mpz_sub_ui(d,q,1);

    mpz_mul(n,p,q);
    mpz_mul(phi,e,d);

   
    mpz_set_ui(e,65537);

    mpz_invert(d,e,phi);
    q_str=mpz_get_str(NULL,10,n);

    //printf("n: \n%s\n",q_str);

    //printf("e: \n%s\n",mpz_get_str(NULL,10,e));
    //printf("d: \n%s\n",mpz_get_str(NULL,10,d));
   
    printf("Llave publica: (%s,%s)\n\n",mpz_get_str(NULL,10,e),mpz_get_str(NULL,10,n));
    printf("Llave privada: (%s,%s)\n\n",mpz_get_str(NULL,10,d),mpz_get_str(NULL,10,n));

    printf("Otros valores:\np: %s\nq: %s\n\n",mpz_get_str(NULL,10,p),mpz_get_str(NULL,10,q));

}

6 comentarios:

  1. ahhh si...

    apt-get install libgmp3-dev libgmp3

    ResponderEliminar
  2. ANGEL CERVANTES: LLAVE PUBLICA

    (65537,64644473563374063166823156989841969600259437375459596444001315161522279976994859075073733929790176917972507458172441594545211005927356361613759593108016505208660846423353341461768189391544106778547544200003649016527608399622501494092154903996696742150462185899746156758699108194306082007270098498432762928982757078708753788547182044610809539662633163131670212538193654627305598679363476895069595430011325471349966353683097945139895534145791151322494277801267272661506188527838351784198268174851998648106929805443660589562636696123360691001417514272945095653557987578861)

    ResponderEliminar