All pastes #292460 Raw Edit

Unnamed

public text v1 · immutable
#292460 ·published 2006-12-26 15:24 UTC
rendered paste body
Key generation
==============
    Key generation shows progress by printing different characters to
    stderr:  
             "."  Last 10 Miller-Rabin tests failed
             "+"  Miller-Rabin test succeeded
             "!"  Reloading the pool with fresh prime numbers
             "^"  Checking a new value for the generator
             "<"  Size of one factor decreased
             ">"  Size of one factor increased

    The prime number for Elgamal is generated this way:

    1) Make a prime number q of 160, 200, 240 bits (depending on the keysize)
    2) Select the length of the other prime factors to be at least the size
       of q and calculate the number of prime factors needed
    3) Make a pool of prime numbers, each of the length determined in step 2
    4) Get a new permutation out of the pool or continue with step 3
       if we have tested all permutations.
    5) Calculate a candidate prime p = 2 * q * p[1] * ... * p[n] + 1
    6) Check that this prime has the correct length (this may change q if
       it seems not to be possible to make a prime of the desired length)
    7) Check whether this is a prime using trial divisions and the
       Miller-Rabin test.
    8) Continue with step 4 if we did not find a prime in step 7.
    9) Find a generator for that prime.

    This algorithm is based on Lim and Lee's suggestion from the
    Crypto '97 proceedings p. 260.