Webbserverprogrammering 1

Show sourcecode

The following files exists in this folder. Click to view.

webbsrvprg/exercises/quiz/

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)
<?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) % 2){
                
$temp $num_list[$i];
                
$num_list[$i] = abs($num_list[($i $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 $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_str200); // Kortar ner den så att den inte blir allt för lång.
        
$output base_convert($num_str10$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($str0$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), 1036);
        return(
$salt);
    }
?>