Training für die Crypto´s

gibt es irgendwo gute grundlagen zum thema? (Ja ich habe das Orakel von Google schon befragt)
 
so hab mich ein wenig schlau gemacht und auch gleich eine kleine php funktion für den Cäsar Code geschrieben:

PHP:
                // $input ist der zu verschlüsselnde Text, $diff die Anzahl stellen um das Alphabet zu verschieben
		function plain2caesar($input, $diff)
		{
                        // Alles in Grossbuchstaben umwandeln
			$tmp = strtoupper($input);
			$signs = 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');
			$anzahl = count($signs);
			echo $anzahl;
			for ($x=0;$x<$anzahl;$x++)
			{
				if (($x-$anzahl+$diff)>=0)
				{
					$signs2[$x] = $signs[$x-$anzahl+$diff];
				}
				else
				{
					$signs2[$x] = $signs[$x+$diff];
				}
			}
			return str_replace($signs,$signs2,$tmp);
		}
was mach ich falsch? denn wenn ich das dann aus gebe kommt nicht viel schlaues dabei raus...
 
Offenbar geht str_replace auch inkrementell vor, ersetzt also beispielsweise bei einem $diff von 2 ein H durch ein J, im nächsten Durchlauf das J durch ein L usw. so lange bis der Array durchgelaufen ist und man bei A und B als einzige Buchstaben, die noch im Wort stehen (die ersten 2) angelangt ist. Mit negativen $diff tritt das Problem nur bei den ersten Buchstaben des Alphabets auf, die zu Beginn auf die letzten Paar gematcht werden und am Ende nochmal.

Es bleibt dir also nix weiter übrig, als den String selbst inkrementell durchzugehen, dass du jeden Buchstaben auch nur einmal tauschen lässt.


[OFF-TOPIC]
Könnte man die Farben des PHP-Syntax Highlightings mal ein bisschen anpassen? Das ist ziemlich kontrastarm und damit schwer zu lesen.
 
Zurück
Oben