Hangar.La tienda de software del Amiga

MD5Random

MD5-based Random Number Generator (PPC+68k)

Short:        MD5-based Random Number Generator (PPC+68k)
Author:       Rich Skrenta, Andreas R. Kleinert (port and sample program)
Uploader:     info ar-kleinert de
Type:         dev/c
Architecture: m68k-amigaos; ppc-powerup

 *************************************************************************

 After becoming frustrated with the lack of a standalone, portable,
 decent random number generator, I decided to make one based on a
 cryptographic one-way hash function.  I chose MD5 since it is fast
 and free source was readily available.  More cryptographically
 secure hash functions are available (e.g. SHA-1), but for the
 purposes of a rand/random/erand48 replacement, MD5 should be more
 than sufficient.

 MD5 takes an arbitrary amount of input and yields a 16 byte hash.
 This RNG continually MD5's a 16 byte digest, and uses the bottom N
 bits as the random number yielded, where N is just large enough to
 include the largest random number desired.

     To yield a random number between 0 and r:

             create mask which has enough bits to include all of r
                     (for example, if r is 100, mask would be 0x7F)

             do {
                     digest = MD5(digest)
                     number = digest & mask
             } while (number > r)

 The digest should be loaded and saved to a disk file between
 invocations of a program using the RNG.

 Random functions appear after the included MD5 code.

 Send comments to:  skrenta@pbm.com (Rich Skrenta)

 *************************************************************************

 The Amiga 68k/PPC version comes with both, makefiles for 68k and PPC,
 and test programs for both CPUs.

 A few changes had to be made for the Amiga port (#ifdef AMIGA) - and
 since this random number generator has a "brain", the most important
 change perhaps was, that the location of this brain now is "s:randseed".

 In case you want to run multiple copies of it, you'll perhaps like
 to choose a different (process-dependent) name. You also could fetch
 the "digest" from somewhere else (i.e. using a conventional random
 number generator).
 
 --
 ARK, 30/May/2000

Gratis

Descargar 31 KB

Desde el Amiga: abre Hangar y busca MD5Random.

AutorRich Skrenta, Andreas R. Kleinert (port and sample program)
Categoríadev/c
Tamaño31 KB
Param68k-amigaos; ppc-powerup
OrigenAminet