Random number generation
Décio Luiz Gazzoni Filho
decio at decpp.net
Thu Nov 3 14:27:28 CET 2005
On Nov 3, 2005, at 7:33 AM, Gabriele Martino wrote:
> Hi,
> I need to generate random numbers of 512 bits.
> I use the following code :
>
> mpz_t p;
> gmp_randstate_t rstate;
> mpz_init2(p,512);
> gmp_randinit(rstate,GMP_RAND_ALG_LC, 32);
> mpz_urandomb(p, rstate, 512);
>
> The numbers are generated but the problem is that if I run several
> times this code it produces the SAME sequence of random numbers.
> How can I solve this problem?
I know I shouldn't try to help, but I will anyway. Be warned though
that if you don't pay attention to my reply I won't provide any
further help.
A pseudo-random number generator (such as the one that GMP uses)
will, given an initial state, generate the same sequence always. The
point is that you can use a small piece of information (the seed) to
vary the initial state. You could use /dev/random to generate the
seed, or perhaps read your CPU's cycle counter or other fine-grained
timing source. After obtaining a seed, you can use the functions from
here: http://www.swox.com/gmp/manual/Random-State-Seeding.html to
seed the pseudo-random number generator.
I see that you're trying to generate 512-bit integers. That suggests
an implementation of say the RSA cryptosystem. In that case, *don't*
use the GMP pseudo-random number generator as it's not
cryptographically safe (read: your system will be much much easier to
crack than you think). In that case, use a real source of entropy
such as /dev/random (on a Unix system, not sure what's the equivalent
on a Windows system).
Décio
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 186 bytes
Desc: This is a digitally signed message part
Url : http://gmplib.org/list-archives/gmp-discuss/attachments/20051103/f3367c88/PGP.bin
More information about the gmp-discuss
mailing list