function _getChallenge($max_id, $attempts) { $random =& fbRandom::getInstance(); // sha1 needs 80 $entropy = $random->nextBytes(64) . $random->getEntropy() . sprintf('%20s', $max_id) . sprintf('%03d', $attempts); // convert 32 byte hex string to 22 byte base 64 string $challenge = base64_encode(pack('H*', md5($entropy))); // discard superfluous trailing '==' chars $challenge = substr($challenge, 0, 22); return $challenge; }
$fb_random =& new fbRandom_LCG(); break; case 'fbRandom_GMP': $fb_random =& new fbRandom_GMP(); break; case 'non_blocking': $fb_random =& fbRandom::getInstance(false); break; case 'blocking': $fb_random =& fbRandom::getInstance(true); break; case 'seedable': $fb_random =& fbRandom::getInstance(null, 1); break; case 'blocking_seedable': $fb_random =& fbRandom::getInstance(true, 1); break; default: $fb_random =& new fbRandom_MT_Rand(); break; } $iterations = isset($_REQUEST['iterations']) ? (int) $_REQUEST['iterations'] : 10; $length = isset($_REQUEST['length']) ? (int) $_REQUEST['length'] : 10; $seed = isset($_REQUEST['seed']) ? $_REQUEST['seed'] : null; if ($seed != null) { $fb_random->setSeed($seed); } echo "\n<form>\nRNG:\n<select name='random'>\n<option {$selected['fbRandom_Rand']} \t\tvalue='fbRandom_Rand'>fbRandom_Rand (rand())</option>\n<option {$selected['fbRandom_MT_Rand']} \tvalue='fbRandom_MT_Rand'>fbRandom_MT_Rand (mt_rand())</option>\n<option {$selected['fbRandom_DevRandom']} value='fbRandom_DevRandom'>fbRandom_DevRandom (/dev/random)</option>\n<option {$selected['fbRandom_DevUrandom']} value='fbRandom_DevUrandom'>fbRandom_DevUrandom (/dev/urandom)</option>\n<option {$selected['fbRandom_Win32']}\t\tvalue='fbRandom_Win32'>fbRandom_Win32</option>\n<option {$selected['fbRandom_LCG']}\t\t\tvalue='fbRandom_LCG'>fbRandom_LCG</option>\n<option {$selected['fbRandom_GMP']}\t\t\tvalue='fbRandom_GMP'>fbRandom_GMP</option>\n<option {$selected['blocking']} \tvalue='blocking'>Blocking</option>\n<option {$selected['seedable']} \tvalue='seedable'>Seedable</option>\n<option {$selected['blocking_seedable']} value='blocking_seedable'>Blocking & Seedable</option>\n</select>\n<br />\nIterations:\n<input type='text' name='iterations' value='{$iterations}' />\n<br />\nLength:\n<input type='text' name='length' value='{$length}' />\n<br />\nSeed:\n<input type='text' name='seed' value='{$seed}' />\n<br />\n<input type='submit' name='submit' value='Select' />\n</form>\n<pre>\n"; echo 'Using ', get_class($fb_random), ' class<br /><br /><br />'; for ($i = 0; $i < $iterations; ++$i) { $b = $fb_random->nextBoolean();
<?php // $CVSHeader: _freebeer/www/demo/lib.crypt.php,v 1.2 2004/03/07 17:51:34 ross Exp $ // Copyright (c) 2002-2004, Ross Smith. All rights reserved. // Licensed under the BSD or LGPL License. See license.txt for details. require_once './_demo.php'; require_once FREEBEER_BASE . '/lib/Random.php'; echo html_header_demo('JavaScript Crypt Class', '../lib/crypt.js'); $rng = fbRandom::getInstance(); $salt = $rng->nextSalt(); if (!isset($_REQUEST['t_crypt_in'])) { $_REQUEST['t_crypt_in'] = 'enter text to encrypt here'; } if (!@$_REQUEST['t_crypt_salt_in']) { $_REQUEST['t_crypt_salt_in'] = $salt; } ?> <script type="text/javascript" language="JavaScript" src="../lib/crypt.js"></script> <script type="text/javascript" language="JavaScript"> <!-- // <![CDATA[ function btn_crypt_onclick(f) { var crypted = crypt(f.t_crypt_in.value, f.t_crypt_salt_in.value); f.t_crypt_out.value = crypted; f.t_crypt_salt_out.value = crypted.substr(0, 2); return false; } // ]]> --> </script> <form method="post" name='frm_crypt'> <table>