78 lines
2.0 KiB
PHP
78 lines
2.0 KiB
PHP
<?php include '../common.php'; ?><!DOCTYPE html>
|
|
<html lang="no">
|
|
<head>
|
|
<title><?=title();?></title>
|
|
<link rel="stylesheet" href="../index.css">
|
|
</head>
|
|
<body>
|
|
|
|
<div class="container">
|
|
<h1><?=title();?></h1>
|
|
<h4><?=getNavigation();?></h4>
|
|
<h2>Kryptering</h2>
|
|
|
|
<?php
|
|
$input = $_POST['input'] ?? 'standard påstand';
|
|
$output = $_POST['output'] ?? '';
|
|
|
|
$randoms = "!#%&/()=?+*-:;";
|
|
$asciiKoder = array(); // liste med 'godkjente' ascii koder som de kan rotere på.
|
|
|
|
function krypter($input): String {
|
|
// Array med alle tegn i den insatte strengen.
|
|
$karakterer = preg_split('//u', $input, null, PREG_SPLIT_NO_EMPTY);
|
|
|
|
// Flytte på alle karakterene med 2/3-deler.
|
|
$karakterer = arrayMove($karakterer, 2/3);
|
|
|
|
// gjøre hvert tegn om til ascii-tall med mb_ord
|
|
// forskyve tallene til +30 per $asciiKoder
|
|
// sette inn tilfeldige random-tegn annenhvert tegn
|
|
|
|
foreach ($karakterer as &$tegn){
|
|
// echo $tegn.": ".mb_ord($tegn)."<br>\n";
|
|
$tegn = mb_ord($tegn);
|
|
|
|
}
|
|
unset($tegn);
|
|
|
|
return implode($karakterer);
|
|
}
|
|
|
|
function dekrypter($input): string {
|
|
// Array med alle tegn i den insatte strengen.
|
|
$karakterer = preg_split('//u', $input, null, PREG_SPLIT_NO_EMPTY);
|
|
|
|
$karakterer = arrayMove($karakterer, 1/3);
|
|
|
|
return $input;
|
|
}
|
|
|
|
// 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($ut);
|
|
|
|
return $ut;
|
|
}
|
|
|
|
echo "<p>Ukryptert: <textarea>".$input."</textarea></p>";
|
|
echo "<p>Kryptert: <textarea>".krypter($input)."</textarea></p>";
|
|
|
|
?>
|
|
</div>
|
|
|
|
</body>
|
|
</html>
|