Let’s Build Verschlüsselung: Entschlüsseln

04. Dezember 2016 von | Kategorie(n): Programmierung
Schlagwörter: // // //

Let’s Build Verschlüsselung: Entschlüsseln

Ohne die Entschlüsselung macht eine Verschlüsselung nicht sonderlich viel Sinn, oder? Daher zeige ich in diesem Artikel, wie der entworfene Algorithmus „rückwärts“ läuft, um unseren Geheimtext wieder in Klartext zu verwandeln.

Das „Zurückmischen“

Der String, der im Falle einer Entschlüsselung eingegeben wird, ist durchgemischt. Wir kennen zum Glück die Kriterien, welche eben diese Vermischung bestimmen, so kann das Ganze rückgängig gemacht werden. Beim Vermischen wurde zuerst das 2. & 3. Zeichen (usw.) vertauscht, dann das 1. & 2. Zeichen (usw.). Folglich muss beim „Zurückmischen“ zuerst das 1. & 2. Zeichen (usw.), dann 2. & 3. Zeichen (usw.) vertauscht werden. Eigentlich easy.

Wie kommt man zurück zu den Buchstaben?

Berechtigte Frage! Nicht alle Binärzahlen in der ASCII-Tabelle sind gleichlang! Um dieses Problem im Vorfeld zu umgehen, hat der Verschlüsselungsalgorithmus (cooles Wort) die Zahlen, die „zu kurz“ sind, mit Nullen aufgefüllt. Da diese vor die Zahl gehangen wurden, beeinflussen sie diese nicht und verhalten sich wie führende Nullen in unserem „normalem“ Zahlensystem (Dezimalsystem).

// Den sortierten String in die einzelnen Zahlen zerlegen.
$arr = str_split($string, 8);
$length = count($arr);

Das schöne ist, dass uns diese Zeilen (s.o.) sogar einen Array geben, der im nächsten Schritt mit einer Schleife verarbeitet wird.. und da sind die Zahlen bzw. Buchstaben.

Hier noch einmal der ganze Entschlüsselungsalgorithmus:

// Das ganze "zurückmischen"
for($i = 0; $i < $key + 1; $i++)
{	
	// 1. & 2. vertauchen, 3. & 4. vertauchen usw..
	for($j = 0; $j < strlen($string) - 1; $j += 2) {
		$char = $string[$j];
		$string[$j] = $string[$j+1];
		$string[$j+1] = $char;			
	}
		
	// 2. & 3. vertauchen, 4. & 5. vertauchen usw..
	for($k = 1; $k < strlen($string) - 1; $k += 2) {
		$char = $string[$k+1];
		$string[$k+1] = $string[$k];
		$string[$k] = $char;		
	}
}

// Den sortierten String in die einzelnen Zahlen zerlegen.
$arr = str_split($string, 8);
$length = count($arr);

for($i = 0; $i < $length; $i++) {
	$bin = $arr[$i];
	$dec = bindec($bin);
	$char = chr($dec);
	$encoded .= $char;
}

 

Möchtest du mich unterstützen? Dann abonniere doch meinen Newsletter (kostenlos) oder hinterlasse unten einen Kommentar. Freue mich auf Reaktionen meiner Leser!

Was denkst du über diesen Post?
  • Gut (0)
  • Hilfreich (2)
  • 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.

35 − 31 =