From: Kirk Haines Date: 2005-10-14T00:31:46+09:00 Subject: ANN: Crypt::ISAAC 0.9.1 released This release is primarily a reorganization of the old package. It has a much better installer, a basic unit test suite, better README and licensing info, and a gem has been built for Crypt::ISAAC as well. The only functionality change is to add an option when creating a new generator that will force it to try to use /dev/random to seed the generator, instead of /dev/urandom (falling back to rand() if neither is available). This is an experimental feature -- seeding from /dev/random appears to be almost too slow to be usable since so much entropy is needed, but to use it, create pass false when creating the object, as follows: prng = Crypt::ISAAC.new(false) The code should run anywhere that Ruby does, though there will be support for better seeding of the prng on Windows coming soon. The package has been uploaded to Rubyforge: http://rubyforge.org/project/crypt-isaac Here is the README: Crypt::ISAAC README ============ ISAAC is a cryptographically secure PRNG for generating high quality random numbers. Detailed information about the algorithm can be found at: http://burtleburtle.net/bob/rand/isaac.html This is a pure Ruby implementation of the algorithm. It is reasonably fast for a pure Ruby implementation. On an 800Mhz PIII computer running Ruby 1.8.2, and while the machine is also serving as general desktop, the library seems to consistently generate between 15000 and 16000 random numbers per second. Ruby uses the Mersenne Twister as its PRNG, and while this the Twister is a fast PRNG that produces highly random numbers, it is not strong for cryptographic purposes, nor is it suitable when one needs multiple independent streams of random numbers. Crypt::ISAAC is suitable for either purpose. Requirements ------------ * Ruby 1.8 (should also run on 1.6.x) Install ------- If you have never installed Crypt::ISAAC, you may run the testsuite to confirm that it works with: # ruby setup.rb test If you already have a version of Crypt::ISAAC installed, but want to confirm this one before installing, run the test suite manually as follows: # ruby test/TC_ISAAC.rb local When you are ready to install Crypt::ISAAC, type: # ruby setup.rb install This one step will install Crypt::ISAAC in your Ruby SITELIB. To test the library after installation: # ruby setup.rb test Usage ----- require 'crypt/ISAAC' rng = Crypt::ISAAC.new r1 = rng.rand() # returns a floating point between 0 and 1 r2 = rnd.rand(1000) # returns an integer between 0 and 999 rand() should work identically to the Kernel.rand(). Enjoy it. Let me know if you find anything that can be improved or that needs to be fixed. License ------- The Crypt::ISAAC library is licensed with an MIT style licence. See the LICENSE file for details. As for the ISAAC algorithm itself, see: http://burtleburtle.net/bob/rand/isaac.html Please let me know if you run into any problem, especially with the gem. This is the first gem that I have produced. Kirk Haines khaines@enigo.com