note 96921 added to function.mt-srand
| From: | dev at 10e12 dot net | Date: | Tue, 23 Mar 2010 11:56:56 +0000 |
| Subject: | note 96921 added to function.mt-srand | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-167307@lists.php.net to get a copy of this message | ||
What about this for an example...
(sorry for the funky line breaks but I have once
more reported the bug on this issue of word
wrapping to no avail)
Intending to use it in passing a "semi-guaranteed"
properly seeded random number to a client, then to
capture input from the user which must be encrypted
client side before being sent to the server again
a) during the same session and,
b) within a set time limit.
for more reading also see:
AES Rijndael enc/dec routines for javaScript
developed and tested by Herbert Hanewinkel,
http://www.hanewin.net/encrypt/aes/aes.htm
<?php
/*
calling the function, prepping the data to send to
the client... , who then uses it in a javascript
implementation of AES Encrypt.
*/
function SHA256($str, $keyval=""){
if ($keyval!==""){//not null or empty
$sHash = mhash(Constant('MHASH_SHA256'),$str, $keyval);
}else{
$sHash = mhash(Constant('MHASH_SHA256'),$str);
}
// same as Binary 2 Hex conversion
return implode(unpack('H*',$sHash),'');
}
/*---------------------------------------------------
Radomizing the random data with fixed data for
the user and location If return value maximum
is set to zero (0) the function uses mt_getrandmax
If both retMin and retMax is zero (0) the function
uses mt_rand w.o. limits
*----------------------------------------------------*/
function local_prgn($retMin = 0, $retMax = 0){
// first get the session id of the request session
$sSrv = session_id();
// the following is valid only on the current server
$sSrv = implode(unpack($_SERVER['SERVER_NAME'].
$_SERVER['SERVER_ADDR'].$sSrv),'');
// the following applies only to the requesting client
$sReq = implode(unpack($_SERVER['REMOTE_ADDR'].
$_SERVER['REQUEST_TIME']),'');
// get a SHA256 seed based on the current values
$sSeed = SHA256($sSrv,$sReq);
// get a random value based on the uniqueness of the seed above
mt_srand($sSeed); // seed the random num gen
// some error handling and checking
if ($retMin > $retMax){
// swap vars if wrong order
$rx = $retMax; $retMax = $retMin; $retMin = $rx;
} else if ($retMin == $retMax){
//meaningless range, not very random
//ensure for next check in this range
$retMin = 0; $retMax = 0;
}
// select what we need to return
if ((($retMax == 0)&&($retMax = mt_getrandmax))||
($retMin==$retMax)){
return mt_getrandmax();
}else{
return mt_getrandmax($retMin,$retMax);
}
}
?>
----
Server IP: 80.67.10.226
Probable Submitter: 212.181.164.190
----
Manual Page -- http://www.php.net/manual/en/function.mt-srand.php
Edit -- https://master.php.net/note/edit/96921
Del: integrated -- https://master.php.net/note/delete/96921/integrated
Del: useless -- https://master.php.net/note/delete/96921/useless
Del: bad code -- https://master.php.net/note/delete/96921/bad+code
Del: spam -- https://master.php.net/note/delete/96921/spam
Del: non-english -- https://master.php.net/note/delete/96921/non-english
Del: in docs -- https://master.php.net/note/delete/96921/in+docs
Del: other reasons-- https://master.php.net/note/delete/96921
Reject -- https://master.php.net/note/reject/96921
Search -- https://master.php.net/manage/user-notes.php