\n";
- $tegn = mb_ord($tegn);
-
+ if(isset($tegnTegn[$tegn])){
+ // gå x-antall trinn opp i matrisen. Start på begynnelsen hvis den går over enden av matrisen.
+ $tegnNkl = $tegnTegn[$tegn]+10;
+ if($tegnNkl >= count($tegnMatrise)){
+ $tegnNkl -= count($tegnMatrise);
+ }
+ // Oppdater matrisen med det nye tegnet.
+ $tegn = $tegnMatrise[$tegnNkl];
+ }
}
unset($tegn);
- return implode($karakterer);
+ // 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 {
- // Array med alle tegn i den insatte strengen.
+ 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);
- return $input;
+ // 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);
}
- // Rotere nøklene på en array med en satt forskyvning.
+
+ // 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);
@@ -63,13 +100,29 @@
}
}
+ // Ksort sorterer så nøklene setter seg på sin nå riktige plass.
ksort($ut);
return $ut;
}
- echo "
Ukryptert:
";
- echo "
Kryptert:
";
+ // 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 "";
?>