$x\n";
		$R[$x+1]++;
		$D[($x+1).",".($x2+1)]++;
		$x1=$x2;
		$x2=$x;
	}
	ksort($R);
	ksort($D);
	$S=array_sum($R);
	$SD=array_sum($D);
	foreach($R as $k =>$v)
		$R[$k]=round(1000*$v/$S)/10;
	foreach($D as $k =>$v)
		$D[$k]=round(1000*$v/$SD)/10;
	$MSE=0;
	for($i=0;$i<$M;$i++)
		$MSE+=($R[$i+1]-100/$M)*($R[$i+1]-100/$M);
	$R['MSE']=$MSE/$M;
	
	$MSE=0;
	for($i=0;$i<$M;$i++) for($j=0;$j<$M;$j++)
		$MSE+=($D[($i+1).",".($j+1)]-100/$M/$M)*($D[($i+1).",".($j+1)]-100/$M/$M);
	$D['MSE']=$MSE/$M/$M;
	
	$MA["1: $M,$K,$IV"]=$R['MSE'];
	$MA["2: $M,$K,$IV"]=$D['MSE'];
	//print_r($R);
	//print_r($D);
}

asort($MA);
//print_r($MA);


//CRYPTO & HASH

$IN=1257546;

$K=3;
$M=2;

//$IV=rand(1,$M);
$IV=3;

echo "\n$K,$M,$IV:\n";

$x=$IN;
$i=0;
while($x>0){
	$rev[$i]=$x%$M;
	$x=floor($x/$M);
	$i++;
}
foreach($rev as $i =>$v) 
	$in[count($rev)-1-$i]=$v;
ksort($in);

echo "IN:$IN ";print_r($in);

foreach($in as $i =>$n){
	if ($i==0) $h=($K+$IV)%$M;
	else $h=$ot[$i-1];
	$x=($n+$h)%$M;
	$ot[$i]=$x;
}

$rev=[];
foreach($ot as $i =>$v)
	$rev[count($ot)-1-$i]=$v;
ksort($rev);
$p=1;
$OUT=0;

foreach($rev as $v){
	$OUT+=$v*$p;
	$p*=$M;
}

echo "OUT: $OUT ";print_r($ot);

$c=$ot[count($ot)-1];

echo "\nIN: $IN\nOUT:$OUT\nHash | CRC | MAC:$c";

?>