<?php
define( 'WP_DEBUG', true );
ini_set('display_errors', 1);
error_reporting(E_ALL);
$startzeit = time();
$mainkey ="123";
setdate($mainkey, $startzeit);
function setdate($mainkey, $startzeit){
$day = date("d"); //1-31
$month = date("m"); //1-12
$year = date("Y"); //xxxx
$dayofyear = date("z");//1-365
$dayofweek = date("N");//1-7
$dayspermonth = date("t");//28-31
$leapyear = date("L")+1;//0+1 or 1+1 //1-2
generatetimevalues($day, $month, $year, $dayofyear, $dayofweek, $dayspermonth, $leapyear, $mainkey, $startzeit);
}
function generatetimevalues($day, $month, $year, $dayofyear, $dayofweek, $dayspermonth, $leapyear, $mainkey, $startzeit){
//Buntes Würfeln :D
if($day % 2 != 0){$a=$day;} else{$a=$year;}
if($month% 2 != 0){$b=$month;} else{$b=$dayofyear;}
if($year% 2 != 0){$c=$year;} else{$c=$dayspermonth;}
if($dayofyear% 2 != 0){$d=$dayofyear;} else{$d=$leapyear;}
if($dayofweek% 2 != 0){$e=$dayofweek;} else{$e=$month;}
if($dayspermonth% 2 != 0){$f=$dayspermonth;} else{$f=$dayofweek;}
if($leapyear% 2 != 0){$g=$leapyear;} else{$g=$day;}
//Einsetzen in simple Rechenaufgaben
$ta = abs($a*$b);
$tb = abs($a-$e);
$tc = abs($g+$f);
$td = abs($d/($a+$f));
$te = abs($c*24);
$tf = abs($g*$f*$a);
$tg = abs($d-$e/(27-$f));
$th = abs(($a+$b+$c)/($d-$e-$f));
$tstr = round(abs(((($tg-$tf)*($td+$ta))+(2*$te))/($tc-$tb)));
generatepistr($ta, $tb, $tc, $td, $te, $tf, $tg, $th, $tstr, $mainkey, $startzeit);
}
function generatepistr($ta, $tb, $tc, $td, $te, $tf, $tg, $th, $tstr, $mainkey, $startzeit){
//Festlegen der Berechnungsgrenze von Pi
$timevalues = array($ta, $tb, $tc, $td, $te, $tf, $tg, $th);
$maxtimevalue = max($timevalues);
$pilength = $maxtimevalue+5;
//Berechnen von Pi
ob_implicit_flush(1);
ob_start(NULL, 4096);
$w = gmp_init(0);
$k = 1;
$n1 = gmp_init(4);
$n2 = gmp_init(3);
$d = gmp_init(1);
$i = 0;
$pi = null;
while(true) {
$u = gmp_div_q($n1, $d);
$v = gmp_div_q($n2, $d);
if(gmp_cmp($u, $v) == 0) {
$pi = $pi."".gmp_strval($u)."";
++$i;
if($i % 10 == 0) {
}
if($i == $pilength) {
break;
}
$u = gmp_mul($d, gmp_mul(-10, $u));
$n1 = gmp_mul($n1, 10);
$n1 = gmp_add($n1, $u);
$n2 = gmp_mul($n2, 10);
$n2 = gmp_add($n2, $u);
} else {
$k2 = $k << 1;
$u = gmp_mul($n1, $k2 - 1);
$v = gmp_add($n2, $n2);
$w = gmp_mul($n1, $k - 1);
$n1 = gmp_add($u, $v);
$u = gmp_mul($n2, $k + 2);
$n2 = gmp_add($w, $u);
$d = gmp_mul($d, $k2 + 1);
++$k;
}
}
$pistopzeit = time();
//Ausgabe von Pi in $pi
//Finden einzelner Abschnitte in pi
$pia = substr($pi, $ta, 5);
$pib = substr($pi, $tb, 5);
$pic = substr($pi, $tc, 5);
$pid = substr($pi, $td, 5);
$pie = substr($pi, $te, 5);
$pistr = round(abs(((($pia*$pic)/($pie-$pid))*$pib+$pic)*((round(pi())*$pie))));
generatehash($mainkey, $tstr, $pistr, $startzeit, $pilength);
}
function generatehash($mainkey, $tstr, $pistr, $startzeit, $pilength){
//Md5 oder SHA1
if ($tstr % 2 != 0){$tstrhash = md5($tstr);} else {$tstrhash = sha1($tstr);}
if ($pistr % 2 != 0){$pistrhash = sha1($pistr);} else {$pistrhash = md5($pistr);}
//Zaubern mit hash_hmac("sha256", $value, $key);
$keyla = hash_hmac("sha256", $pistrhash, $tstrhash);
$keylb = hash_hmac("sha256", $tstrhash, $pistrhash);
$keylc = hash_hmac("sha256", $tstr, $pistr);
$keyld = hash_hmac("sha256", $pistr, $tstr);
//Zusammenführen
$keylx = "$keylc$keyla";
$keyly = "$keylb$keyld";
$keyz = hash_hmac("sha256", $keylx, $keyly);
$key = hash_hmac("sha256", $keyz, $mainkey);
ausgabe($key, $startzeit, $pilength);
}
function ausgabe($key, $startzeit, $pilength){
$stopzeit = time();
$laufzeit = $stopzeit-$startzeit;
echo "<p>";
echo "Rechendauer: ".$laufzeit." s";
echo "</p>";
echo "<p>";
echo "Stellen von Pi:".$pilength;
echo "</p>";
$da = date("d");
$mo = date("m");
$ye = date("y");
$aktuell = " ".$da."-".$mo."-".$ye;
$da2 = $da+1;
$bis = " ".$da2."-".$mo."-".$ye;
echo "<p>";
echo "Dieser Key ist von $aktuell bis $bis gültig.";
echo "</p>";
echo "<p>";
echo $key;
echo "</p>";
}
?>