/* print
string(14) "85604117636461"
bool(true)
*/
<?php
//header("Content-Type:text/html; charset=utf-8");
$SaionAuth='g,naophgasiosipdyutgfd54h9AS456B497SS1G64YU9876FD41SGFDMIOHotgfdh49';
function _SaionHash($args, $Rand) {
global $SaionAuth;
$L=$R='';
for($i=0;$i<strlen($args);$i++){
if($i%2){
$L.=$args{$i};
}else{
$R.=$args[$i];
}
}
list(,$a,$b,$c,$d)=unpack('N4',md5($L.$Rand.$SaionAuth.$R, 1));
return sprintf("%u",SHMul(SHMul($a, $b<<1 | 1)+SHMul($b, $c<<2 | 1), SHMul($c, $d<<3 | 1)+SHMul($d, $a<<4 | 1)));
}
function SaionHash($args) {
$Rand=mt_rand(0,9).mt_rand(0,9).mt_rand(0,9).mt_rand(0,9);
return $Rand._SaionHash($args, $Rand);
}
function SaionCheckHash($args, $hash) {
$Rand=substr($hash, 0, 4);
if(substr($hash, 4)==_SaionHash($args, $Rand)){
return true;
}else{
return false;
}
}
function SHMul($a, $b) {
$mod=$a; #in fact, error = =
for($i=1;$i<=31;$i++){
if($b >> $i & 1){
$mod=(int)($mod+($a<<$i));
}
}
return $mod;
}
$hash=SaionHash('hahahaahhaahahahahahahahahahahahah');
var_dump($hash.'<br/>');
var_dump(SaionCheckHash('hahahaahhaahahahahahahahahahahahah', $hash));
/* print
string(14) "85604117636461"
bool(true)
*/
?>