Revision history Crypt::Random

1.56 -- Tue Feb 04 21:47:59 AST 2025

    [Significant updates since 1.54]
    - New Maintainer
    - Implement new Win32API provider
    - Switch rand provider to use Crypt::URandom instead of rand()
    - A number of packaging and build updates

    [Change Log]
    - ad803b2 Increment repo version
    - 82b7643 Fix regex for version creation
    - e7c687b v1.55

1.55 -- Wed Jan 29 23:41:05 AST 2025

    [Significant updates since 1.54]
    - New Maintainer
    - Implement new Win32API provider
    - Switch rand provider to use Crypt::URandom instead of rand()
    - A number of packaging and build updates

    [Change Log]
    - 6e032b0 Add missing use strict and add LICENSE in pod
    - 95ea54a Add spelling exceptions
    - 1858c59 Update copyright information
    - 1f8b29e Switch rand provider to use Crypt::URandom
    - 424ef40 Add new Win32API Provider for Windows
    - 2f5afba Move rand and egd providers to the low strength list
    - 3fed3a9 Modernize calls to new
    - 90e1040 remove unnecessary use lib, add strict and warnings and remove the perl command Remove shebang line
    - b196c21 Add github action for testing
    - b2bc3b6 .gitignore
    - e89a896 Move build process to Dist::Zilla
    - 70446cd Remove archive of previous release
    - 533f310 (tag: 1.54) Import Crypt-Random-1.54 from cpan

--------------------------------------------------------------------------
1.54                                                     June 3, 2021

  * Removed a superfluous call to makerandom_itv() thanks to Larry 
    Leszczynski <larryl@emailplus.org>.

  * Improved makerandom_itv test to ensure generated numbers are in the 
    intterval. 

  * Actually include t/chisquare.t


1.52                                                     December 22, 2018

  * Add a chi square statistical test.  t/chisquare.t

  * Uniform can be passed to the constructor of Crypt::Random::Generator.  
    This should be the default, and will likely be in the next release. 

  * Fixed minor bugs & typos.


1.51                                                     December 22, 2018

  * Test no longer looks for non-eq of two generated numbers as these can be 
    correctly the same if test is run enough number of times.  
    https://rt.cpan.org/Ticket/Display.html?id=99880

  * Removed outdated dependency info.
    https://rt.cpan.org/Ticket/Display.html?id=94441

  * Removed /dev/random read from the test, as it can hang when there is 
    insufficient entropy.
    https://rt.cpan.org/Ticket/Display.html?id=30423

  * Removed potentially unsafe include in bin/makerandom.
    https://rt.cpan.org/Ticket/Display.html?id=128062
  

1.25                                                        March 07, 2005

  * Crypt::Random now uses a BEGIN block when exporting its
    functions. There was a circular reference between
    Crypt::Random and Crypt::Random::Generator, and depending on
    the order the modules were used in, it lead to an 'Undefined
    subroutine' error. Patch by ceeshek@cpan.org.

1.24                                                        March 07, 2005   

  * Removed int() from one of the computations to make
    "forbidden division t_REAL % t_INT" error disappear.

1.23                                                         June 02, 2004

  * Another patch by Micheal Schwern to make the File provider faster.
    Instead of sysread'ing, a byte at a time, we read the required number
    of bytes in one go.

1.22                                                         June 01, 2004

  * Patch by Michael Schwern to replace open/read with sysopen()/sysread()
    so Crypt::Random doesn't waste entropy in /dev/u?random by reading a
    buffer and throwing away unnecessary data.

1.21                                                          May 24, 2004

  * Patch by dorian to workaround Math::Pari's serialization problem.
    

1.20                                                        April 21, 2004

 * Added a Uniform option to makerandom() and makerandom_itv() that 
   doesn't set the high bit of the generated random, and produces
   a number uniformally distributed in the interval. Thanks to Len
   Budney for pointing this out.  

   Here's his explaination:

       If Size is increased to 4 bits, then of 16 values, there are 5 ways
       to get a 1, 5 ways to get a 2, but 6 ways to get a 0. Thus 0 will
       occur 6/5 = 1.2 times more often than 1 or 2. Increasing size to 6
       bits, there are (2^6-1)/3 ways to get a 1 or 2, but there are
       (2^6+2)/3 ways to get a 0, and a 0 will occur more often by a
       factor of (2^6+2)/(2^6-1).

       If Size is then bumped up to 40, as makerandom_itv does, then 0
       will still happen more often than 1 or 2, but now it happens only
       (2^40+2)/(2^40-1) times more often, or about 1 + 2.7*10^-12 times
       more often. This difference is too small to observe in a practical
       experiment, but it is still a deviation from uniformity.

       What's going on is that when ($b-$a) does not evenly divide 2^N,
       the outcome ($b-1) is less likely to happen than the outcome $a.
       The case that Size=2, $a=0 and $b=3 illustrates this most clearly.

       This is easy to correct: we simply want to make the largest value
       of makerandom() to be evenly divisible by ($b-$a), by ignoring any
       result which is >= (2^Size - (2^Size % ($b-$a))). The second
       attached file includes the fix, which you will see produces uniform
       probabilities if you perform the test given above.


1.13                                                        March 11, 2003

  * Changed the die() message at provider contruction to include the 
    name of the provider.

1.12                                                         January, 2003

  * Updated documentation.

  * Removed all /home/vipul/* entries from @INC.

1.11                                                         July 12, 2001

  * Applied a patch by Benjamin Trott to make egd detection more 
    robust.

1.10                                                         July 09, 2001

  * Fix in _pickprovider(), thanks to Benjamin Trott for the patch.

1.08                                                         June 22, 2001 

  * Small fixes.

1.07                                                         June 21, 2001

  * A bug fix in ::Provider::egd::get_data().

1.05                                                         June 21, 2001

  * Integrated and extended Benjamin Trott's patches to add provider
    architechture and egd support to Crypt::Random.

  * Wrote Crypt::Random::Generator, and OO interface to Crypt::Random that
    automagically selects a suitable provider.

  * Wrote a Provider that uses perl's rand(). This provider is used when
    no other stronger provider is available.


0.34                                                        April 17, 2001 

  * Wrote exportable makerandom_octet() that generates random octet
    strings. See documentation for details.

  * Wrote a test for makerandom_octet() in t/octet_string.t