1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#include <stdio.h>
#include <gmp.h>
#include "pbc.h"
int main(int argc, char **argv)
{
mpz_t x;
mpz_t g, h, q;
mpz_init(x);
mpz_init(g);
mpz_init(h);
mpz_init(q);
int bits = 40;
if (argc == 2) {
bits = atoi(argv[1]);
}
mpz_setbit(q, bits);
pbc_mpz_random(q, q);
mpz_nextprime(q, q);
pbc_mpz_random(g, q);
pbc_mpz_random(h, q);
mpz_powm(h, g, h, q);
element_dlog_index_calculus(x, g, h, q);
element_printf("%Zd^%Zd %% %Zd = %Zd\n", g, x, q, h);
return 0;
}
|