Kryptering

= count($tegnMatrise)){ $tegnNkl -= count($tegnMatrise); } // Oppdater matrisen med det nye tegnet. $tegn = $tegnMatrise[$tegnNkl]; } } unset($tegn); // Sette inn tilfeldige tegn fra $randoms, annenhvert tegn $output = ""; foreach ($karakterer as $kar){ $output .= $kar.$randoms[ rand(0,strlen($randoms)-1) ]; } return $output; } function dekrypter($input): string { global $tegnMatrise, $tegnTegn; // Matrise med alle karakterene til den gitte strengen. $karakterer = preg_split('//u', $input, null, PREG_SPLIT_NO_EMPTY); // Fjern hvert andre tegn, da de er 'fillers'. (De bare fyller opp så stringen blir lengre) foreach ($karakterer as $k => $v){ if($k % 2 !== 0){ unset($karakterer[$k]); } } // Flytt karakterene tilbake til dems opprinnelige posisjon $karakterer = arrayMove($karakterer, 1/3); // Justere tegnene tilbake med x-antall tegn. Se krypter() for flere kommentarer. foreach ($karakterer as &$tegn){ if(isset($tegnTegn[$tegn])){ $tegnNkl = $tegnTegn[$tegn]-10; if($tegnNkl < 0){ $tegnNkl += count($tegnMatrise); } $tegn = $tegnMatrise[$tegnNkl]; } } // Slå sammen $karakterer til en string igjen. Dette er stringen dekryptert. return implode($karakterer); } // Funksjon for å rotere nøklene på en array med en satt forskyvning. function arrayMove($array, $forskyvning = 2/3): array { $len = count($array); $start = round($len*$forskyvning); $ut = array(); foreach ($array as $value){ $ut[$start] = $value; $start++; if($start>=$len){ $start = 0; } } // Ksort sorterer så nøklene setter seg på sin nå riktige plass. ksort($ut); return $ut; } // Inputs. Hvis det er et utkryptert input, krypter det og motsatt. Gitt en standardfrase hvis ingen av POST-parametrene er mottatt. if(isset($_POST['krypter'])){ $ukryptert = $_POST['krypter']; $kryptert = krypter($ukryptert); } elseif(isset($_POST['dekrypter'])){ $kryptert = $_POST['dekrypter']; $ukryptert = dekrypter($kryptert); } else { $ukryptert = 'En konduktør sliter når hanen galer.'; $kryptert = krypter($ukryptert); } echo "


"; echo "


"; ?>