21. Oktober 2011

Dechiffrieren leicht gemacht in PHP

21. Oktober 2011 - Geschrieben von Martin - Keine Kommentare

Gerade haben meine Anwendungsentwicklungsmitschüler einen kleinen Chiffrieralgorithmus gebastelt (oder sie haben eine Drehscheibe aus Papier genutzt, aber ich hoffe ersteres :D) und mir verschlüsselte Nachrichten geschickt. Eben hab ich in 10 min folgendes „hingepfuscht“:

<?php
$string = 'oerr pyhamk hew irxwglpyiwwipr';
$splitted = str_split($string);
$abc = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
$i = 0;
while($i <= count($abc)) {
	$newString = '';
	foreach($splitted as $char) {
		if($char != ' ') {
			$newChar = 0;
			$charNum = array_search($char, $abc);
			$newCharNum = $charNum + $i;
			if($newCharNum >= count($abc)) {
				$oversize = $newCharNum - count($abc);
				$newCharNum = $oversize;
			}
			$newChar = $abc[$newCharNum];
			$newString .= $newChar;
		} else {
			$newString .= ' ';
		}
	}
	echo '<p>'.$i.': '.$newString.'</p>';
	$i++;
}


Das einzig kniffelige war der Sprung wenn der Integer $i länger ist als die noch verbleibenden Zeichen, aber dann einfach die Anzahl der Zeichen vom Neuen Char Nummern Wert abziehen und wieder von vorn beginnen :)

Wer nun zu faul ist die einzelnen Zeichenketten durchzuchecken, kann selbstverständlich von ein Wörterbuch anbinden und die gefunden Worte gegenprüfen (so kann man ggf. auch Groß und Kleinschreibung mit einbeziehen).