Show sourcecode
The following files exists in this folder. Click to view.
create_test.php
create_test_fuckingtrasig.php
hash.php
index.php
login.php
main.php
personal_results.php
setup.php
sign_up.php
test_correcting.php
tests.php
user_administration.php
verification.php
hash.php
67 lines UTF-8 Windows (CRLF)
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
<?php
function customHash($pswrd, $salt){
// Hashar lösenordet och saltet. Inte helt säker utan enbart i lärningssyfte
$base = 35; // <= 36
$str = $salt . $pswrd;
for ($i = 0; $i < 5000; $i++){
// Kör 5000 steg för extra säkerhet och tröghet
$str = customHashStep($str, $i, $base);
}
// shortenNumStr($str, 30, $base); // Kortar ner igen fast behövs nog inte HM
return ($str);
}
function customHashStep($input, $setting, $base){
// Tar in strängen som ska stegas och en inställning som gör att alla steg inte görs likadant
// Massa struntsaker bara, jag fattar inte själv riktigt utan bara la till massa saker som såg bra ut.
$num_list = [];
$sum = 0;
$chars = str_split($input);
foreach ($chars as $char) {
$num_list[] = mb_ord($char);
$sum += mb_ord($char);
}
for ($i = 0; $i<count($num_list); $i++){
$num = $num_list[$i];
$num_list[$i] *= $num_list[$i] + $setting * $i + $sum;
if (($num + $setting + $i) % 7 < 2){
$temp = $num_list[$i];
$num_list[$i] = abs($num_list[($i + 2 + $setting)%count($num_list)] - $num_list[($i + 55)%count($num_list)]);
$num_list[($i + 33433)%count($num_list)] = $temp * $num_list[($i*5)%count($num_list)] % ($sum + $i + $setting);
} else{
$num_list[$i] += $setting + 5 + $i*4;
$num_list[($i+11)%count($num_list)] += $sum % 374;
$num_list[($i+2001)%count($num_list)] = $sum * $num_list[$i] % 17;
}
}
$num_str = implode("", $num_list);
shortenNumStr($num_str, 200); // Kortar ner den så att den inte blir allt för lång.
$output = base_convert($num_str, 10, $base);
return($output);
}
function shortenNumStr(&$str, $len){
// Kortar ner en sträng med siffror på ett svårspårat sätt
$x = 0;
while(strlen($str) > $len){
// Tar bort tecknet med index $x och upppdaterar x genom att adera värdet av tecknet
$char = $str[$x]; // Sparar värdet av den som ska tas bort.
$str = substr($str, 0, $x) . substr($str, $x + 1); // Tar bort tecknet
$x += intval($char); // Adderar och modulerar
$x %= strlen($str);
}
return null;
}
function generateSalt($username) : string{
// Unikt för varje användare och förlänger i princip bara lösenordet
$salt = $username . "-" . base_convert(rand(10000000000000000,100000000000000000), 10, 36);
return($salt);
}
?>