Let’s Build Verschlüsselung: „Übersetzen“

02. Oktober 2016 von | Kategorie(n): Programmierung
Schlagwörter: // // //

Da du ja bereits weißt, wie das Ganze hier über die Bühne gehen soll, können wir eigentlich direkt starten. Zunächst sollten aus den Zeichen / Buchstaben, die der Benutzer später eingibt, Binärzahlen gemacht werden. Dies ist in PHP relativ leicht umsetzbar, indem man sich zwei Funktionen zur Hand nimmt, welche bereits existieren. So lässt sich das Übersetzen schnell und einfach implementieren.

Zuerst ASCII, dann binär

Am leichtesten lassen sich aus Buchstaben Zahlen machen, indem man sie in Dezimalzahlen umwandelt (das geht mit der ASCII-Tabelle) und diese in Binärzahlen übersetzt. Was du brauchst:

  • ord() Macht aus einem Buchstaben eine Zahl
  • decbin() Übersetzt eine Dezimalzahl in eine Binärzahl

In PHP sieht dies so aus:

function in() {
	global $string;
	$length = strlen($string);
	$encoded = "";
	
	for($i = 0; $i < $length; $i++) {
		// ASCII-Wert
		$ascii = ord($string[$i]);
		// Binärzahl 
		$bin = decbin($ascii);
		
		// Diese Abfrage sorgt für die führenden Nullen,
		// damit alle Zahlen gleich lang sind (wichtig für
		// Entschlüsselung)
		if(strlen($bin) < 8)
			$bin = str_pad($bin, 8, '0', STR_PAD_LEFT);
		
		$encoded .= $bin;
	}

Erklärung: Die Variable $string stellt den Text da, der von Benutzer eingegeben wurde und verschlüsselt werden soll. Da immer nur ein Zeichen des Strings in ASCII übersetzt werden kann, muss der Klartext ($string) Zeichen für Zeichen durchgegangen werden. Dafür ist die for-Schleife zuständig. Als nächstes wird die Binärzahl „aufgefüllt“, damit alle Binärzahlen gleichlang sind. Dies ist wichtig für die Entschlüsselung.

Als letztes wird dann das übersetzte Zeichen an den String $encoded angehangen. Folglich sammeln sich dort alle übersetzten Binärzahlen.

 

Senf dazu geben ? Scroll runter !

Was denkst du über diesen Post?
  • Gut (0)
  • Hilfreich (1)
  • Nicht gut (0)
  • Lustig 😀 (0)
Diesen Post teilen:
Facebooktwittergoogle_plusredditpinterestlinkedinmail

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

9 + 1 =