Verschlüsselung

Lernziele

Bei der Caesar-Verschlüsselung werden alle Buchstaben um eine Anzahl Stellen verrückt:

Der römische Feldherr Gaius Julius Caesar soll diese Art der Verschlüsselung für militärische Kommunikation verwendet haben. Um von Hand eine solche Nachricht zu entziffern, kann man eine Chiffrierscheibe verwenden:

Aufgabe A1

Schreibe eine Funktion encryption_caesar(cleartext,n), die einen Klartext (cleartext) mithilfe der Caesar-Verschlüsselung in einen Geheimtext (ciphertext) umwandelt. Alle Buchstaben werden um $n$ Stellen im Alphabet verschoben.

Hier ein paar Tipps:

  • Arbeite nur mit Grossbuchstaben. Wandle den Klartext mit upper() in Grossbuchstaben um.
  • Wir brauchen eine Liste oder einen String, der alle Zeichen beinhaltet. Wähle dazu eine beiden Möglichkeiten unten (siehe Code-Beispiel unten) - je nach dem, ob du lieber mit Listen oder Strings arbeitest.
  • Zeichen, die nicht in der Liste vorkommen (Kleinbuchstaben, Zahlen, Leerschlag, Sonderzeichen, …), sollen unverschlüsselt angezeigt werden.
  • Verwende Modulo-Operator %. Damit kannst du verhindern, dass du auf Element von Liste/String zugreifen möchtest, welches nicht darin liegt.
  • Die Liste resp. der String, der alle relevanten Buchstaben beinhaltet wird hier ALPHABET genannt. Es ist eine Python-Konvention, dass Konstanten, also Variablen, die sich im Verlaufe des Programms nicht verändern, mit lauter Grossbuchstaben geschrieben werden.
  • Theorie zu Funktionen
# Option 1: Liste
ALPHABET = ['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']
ALPHABET.index('T') # finde Position von Symbol
ALPHABET[12] # Symbol an angegebener Position
 
# Option 2: String
ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
ALPHABET.index('Z') # finde Position von Symbol
ALPHABET.find('Z') # finde Position von Symbol
ALPHABET[12] # Symbol an angegebener Position
# beachte: Für Strings kann man index oder find verwenden. Unterschied: Sucht man nach einem Zeichen, welches nicht in ALPHABET vorkommen, gibt find -1 zurück und index gibt einen Fehler aus.

Tipps

Aufgabe A2

a)

Die folgende Nachricht ist mit der Caesar-Verschlüsslung verschlüsselt, indem alle Buchstaben um $17$ Stellen verschoben wurden: „ZEWFIDRKZB ZJK JLGVI!“

Was bedeutet die Nachricht?

b)

Nutze deinen Code, um die folgende Nachricht zu knacken: „VLYET CZXLYDSZCY, OTP TYYZGLETGP DNSFWP TX RCFPYPY.“

Tipp

Zusatzaufgabe

Die Caesar-Verschlüsselung ist nicht sehr sicher. Überlege dir selbst (ohne googlen oder im Wiki weiter unten nachzusehen) eine besser Verschlüsslungsmethode. Bespreche deine Idee mit deiner Lehrperson und setze diese in einem Code um.

Die Caesar-Verschlüsselung von oben ist ein sehr unsicheres Verfahren. Eine damit verschlüsselte Nachricht kann mit einem Computer innerhalb eines Sekundenbruchteils geknackt werden. Gewissermassen eine Weiterentwicklung von diesem Verfahren ist die Vigenère-Verschlüsslung (Details in den Aufgaben).

Aufgabe B1

In der Caesar-Verschlüsselung wird jeder Buchstabe um eine bestimmte Anzahl Stellen verschoben. Auch in der Vigenère-Verschlüsselung werden die Buchstaben verschoben. Allerdings nicht um eine feste Anzahl Stellen, sondern mithilfe eines Schlüsselworts.

  1. Stelle eine Vermutung auf, wie die Vigenère-Verschlüsselung funktionieren könnte. Studiere nachher die Erklärung am Ende der Aufgabe.
  2. Verschlüssle von Hand das Wort „INFORMATIK“ mit dem Passwort „KSR“. Verwende als Alphabet wieder alle Grossbuchstaben ohne irgendwelche Sonderzeichen: „ABCDEFGHIJKLMNOPQRSTUVWXYZ“
  3. Analysiere die Sicherheit dieser Verschlüsselungsmethode:
    1. Wie geht man vor, um eine so verschlüsselte Nachricht zu entschlüsseln?
    2. Unter welchen Bedingungen ist sie (praktisch nicht) entschlüsselbar?

Vigenère-Verschlüsselung

Aufgabe B2: Vigenère Programmieren

MittelImplementiere die Vigenère-Verschlüsslung in der Funktion encryption_vigenere(cleartext,password).

Aufgabe B3: Morse-Alphabet

Geheimschriften sind auch eine Art der Verschlüsselung. Schreibe ein Programm, welches eine Klartext-Nachricht ins Morse-Alphabet übersetzt und umgekehrt: cleartext_to_morsecode(cleartext) und morsecode_to_cleartext(morsecode). Die zu Nachrichten cleartext und morsecode sollen jeweils als String (und nicht Liste) der Funktion übergeben werden. Es kann aber durchaus Sinn machen, den String in der Funktion drin in eine Liste umzuwandeln (siehe falls nötig Tipps unten).

Morse-Alphabet und Tipps

Aufgabe B4: Zusatzaufgaben

Die Vigenere-Verschlüsselung ist gewissermassen eine Weiterentwicklung der Caesar-Verschlüsslung. Eine alternative mögliche Weiterentwicklung der Caesar-Verschlüsselung erhält man, wenn man das Alphabet nicht nur um eine fest Anzahl stellen verschiebt, sondern das gesamte Alphabet durchmischt. Aus „ABCDEFGHIJKLMNOPQRSTUVWXYZ“ wird dann zum Beispiel „UELXBICNYAZJSQORTPKFMGVHWD“ oder „VSEIYHJTBUPANRCOQDLXFWKMZG“. Diese neu sortierte Version dient als Schlüssel und wird benötigt, um die Nachricht zu entziffern. Man muss also darauf achten, dass dieser nicht in feindliche Hände gelangt. Diese Art der Verschlüsselung nennt man eine monoalphabetische Verschlüsselung.

Aufgabe C1

  1. Ist die Caesar-Verschlüsselung auch eine monoalphabetische Verschlüsselung?
  2. Wie viele Möglichkeiten gibt es, eine Nachricht mit der Caesar-Verschlüsselung zu verschlüsseln? Es sollen nur die $26$-Standardbuchstaben des Alphabets verschlüsselt werden.
  3. Wie viele Möglichkeiten gibt es für die monoalphabtische Verschlüsselung? (wieder mit $26$ Buchstaben).
  4. Wie schätzt du die Sicherheit der monoalphabtischen Verschlüsselung ein? Welche Möglichkeiten gibt es, um eine damit verschlüsselte Nachricht zu entziffern?
  5. Eine mit der Caesar-Methode verschlüsselte Nachricht kann man problemlos mit Brute-Force entschlüsseln (alle Möglichkeiten ausprobieren). Funktioniert dies bei der monoalphabetische Verschlüsselung auch? Gibt es bessere Möglichkeiten, eine solche zu entziffern?

Aufgabe C2

Die Nachricht „RYDDUYKFXUKEBKFBBKKBQXBPVBJF“ wurde mit dem Schlüssel „UELXBICNYAZJSQORTPKFMGVHWD“ verschlüsselt. Schreibe ein Programm, mit welchem du die Nachricht im Klartext ermitteln kannst.

Tipps

Aufgabe C3

Ist die verschlüsselte Nachricht lange genug, kann man eine Häufigkeitsanalyse durchführen. In der deutschen Sprache kommt der Buchstabe „E“ mit gut $15\%$ eindeutig am häufigsten vor. Kommt also in der verschlüsselten Nachricht der Buchstabe „Q“ am häufigsten vor, können wir davon ausgehen, dass es sich bei diesem eigentlich um ein „E“ handelt. Mit dieser Methode kann man zumindest einmal die häufigsten paar Buchstaben richtig bestimmen. Bei den weniger häufigen Buchstaben wird die Reihenfolge dann wohl nicht mehr ganz stimmen. Mit ein paar cleveren Vermutungen, kann man dies aber relativ einfach korrigieren. Kommt zum Beispiel im verschlüsselten Text häufig das Wort „HIE“ vor, dürfte es sich beim „H“ um wohl um ein „D“ handeln. Ein „S“ wäre auch eine Möglichkeit, aber da „S“ der dritthäufigste Buchstabe ist, wurde dieser wohl bereits korrekt erkannt. Dabei hilft es zu wissen, welche Wörter besonders oft vorkommen: Liste der häufigsten Wörter der deutschen Sprache

Wähle eine der beiden Optionen:

Option 1: Häufigkeitsanalyse von einzelnem String (einfach)

Schreibe eine Funktion, die eine Linie Text einliest und eine Häufigkeitsanalyse durchführt. Das Alphabet soll nur aus den $26$ Standardbuchstaben Bestehen. Alle Buchstaben sollen in Kleinbuchstaben umgewandet werden. Umlaute wie Ä,ä,Ö,ö,Ü,ü sollen als ae,oe und ue, die Buchstaben é,è und à als e und a aufgefasst werden. Buchstaben in einem String kannst du wie folgt ersetzen: s = s.replace('é','e')

Wende deine Funktion auf den folgenden Ausschnitt von Goethe's Faust an und vergleiche deine Resultate mit den Musterlösungen:

Text Faust

Tipps

Lösungen

Option 2: Häufigkeitsanalyse von ganzem Buch (anspruchsvoll)

Wie in Option 1, nur soll anstelle eines einzelnen Strings ein ganzes Buch eingelesen und analysiert werden. Auf Project Gutenberg findest du über $60'000$ gratis Ebooks. Wähle ein Buch aus und klicke dann auf „Plain Text UTF-8“. Das Buch erscheint dann im einfachen Textformat direkt im Browser. Über den dazugehörigen Link, kannst du das Buch direkt in Python einlesen:

import urllib2
 
data = urllib2.urlopen(<Pfad zu File als String>)
line_first = ... # erste Zeile des Texts
line_last  = ... # letzte Zeile des Texts
for line in data:
    line = line.replace('\n', '').decode('utf-8') # replace(...): entfernt nervige Zeilenumbrueche, decode(): Umlaute usw richtig anzeigen
    if line_first <= count <= line_last:
        print(line) # Achtung: keine gute Idee, wenn File sehr viele Zeilen beinhaltet! Baue z.B. Counter ein, damit nach z.B. 100 Ausgaben abbricht

Beachte, dass du noch die erste und letzte Zeilennummer im Buch angeben musst: Der Text am Anfang und Ende des Files gehört nicht zum Buch und soll ignoriert werden.

Kontrolle: am häufigsten vorkommen sollte $E$ (gut $15\%$), gefolgt von $N$ (ca. $10\%$) und $S$. Die letzten Ränge machen typischerweise $Y$, $Q$ und $X$ unter sich aus.

Aufgabe C4 (optional)

Versuche, mithilfe einer Häufigkeitsanalyse den Text (in deutscher Sprache, nur Kleinbuchstaben) unten möglichst fest zu entschlüsseln. Aus welchem Buch ist dieser?

Die Buchstaben in der folgenden Liste ist entsprechend ihrer typischen Häufigkeit in der deutschen Sprache geordnet:

['e', 'n', 's', 'r', 'i', 'a', 't', 'd', 'h', 'u', 'l', 'c', 'g', 'm', 'o', 'b', 'w', 'f', 'k', 'z', 'p', 'v', 'j', 'y', 'x', 'q']

Verschlüsselter Text

Aufgabe C5 (optional)

Die Autokey-Verschlüsselungsmethode ist eine Weiterentwicklung der Vigenere-Verschlüsslung. Anstelle das Schlüsselwort wie bei der Vigenere-Methode wiederholt zu verwenden, wird an den Schlüssel entweder der Klartext oder der bereits verschlüsselte Text angehängt. Somit werden Wiederholungen vermieden, was diese Verschlüsselungsmethode viel sicherer macht. Implementiere die Autokey-Verschlüsselungsmethode.

Erklärung und Beispiele: https://kryptografie.de/kryptografie/chiffre/autokey.htm

Nutze den Code unten, um Nachrichten zu verschlüsseln und entschlüsseln:

Code

Theorie zu Zeichencodierung, ASCII & Unicode:

Siehe Slides 2022_umgang_inet_04_verschluesselung.pdf

Aufgabe D1

Beantworte mithilfe von Python.

  1. Welches ist das 42. Zeichen in ASCII?
  2. An welcher Position in der ASCII-Zeichentabelle steht die Zahl 7?
  3. Welches Wort verbirgt sich hinter „82 111 109 97 110 115 104 111 114 110“?

Aufgabe D2

Wie viele Symbole kann man mit Unicode (1 bis 4 Bytes) darstellen?

Tipp: Siehe Tabelle in Slides.

Aufgabe D3

Studiere das Video und beantworte die Fragen unten:

Fragen:

  1. Welches Problem hat das Aufkommen des Internets im Bezug auf die Kodierung von Zeichen mit sich gebracht? Wie hat man es gelöst?
  2. ASCII verwendet 7 Bit pro Zeichen. Man könnte jedes Unicode-Zeichen mit vier Bytes darstellen, was aber sehr ineffizient wäre. Wie umgeht man dies?
  3. Warum darf in einem mit Unicode dargestellten Text kein 0000 0000-Byte vorkommen? Wie wird dies verhindert?
  4. Wie werden die Buchstaben 'K' und 'e' in ASCII dargestellt? Wie in Unicode? Finde es selber heraus, schaue nicht in einer Tabelle nach.
  5. Das wievielte Zeichen der Unicode-Zeichentabelle wird durch die Binärzahl „11000101 10011110“ ausgedrückt?

Aufgabe D4 (optional, einfache-mittlere Programmierübung)

Unicode-Zeichen werden in 1-4 Byte-Binärzahlen gespeichert. Schreibe eine Funktion unicode_symbol_number(b), die für eine solche Binärzahl bestimmt, das wievielte Unicode-Zeichen es darstellt.

Einfache Variante: nur für 1-Byte Zahlen

Beispiele:

  • „01000001“ → 65
  • „11000010 10000100“ → 132

Tipp: Um eine Binärzahl ins Dezimalsystem umzuwandeln kannst du entweder eine eigene Funktion schreiben (btw: hast du bereits einmal programmiert) oder int("01010101",2) verwenden.

Aus dem letzten Kapitel wissen wir, wie wir mithilfe von Zeichentabellen Zeichen in Binärzahlen umwandeln können. Doch wie können wir nun auf der Ebene von Binärzahlen eine Nachricht verschlüsseln? Eine monoalphabetische Verschlüsselung, wie wir sie oben kennengelernt haben, macht auf jeden Fall keinen Sinn mehr, da unser 'Alphabet' nur noch aus zwei Zeichen besteht: 0 und 1.

Eine einfache Operation auf Bits ist die XOR (eXclusive OR) Operation. Wie der Name andeutet, werden bei der XOR-Operation zwei Bits so verknüpft, dass das Resultat genau dann $1$ ist, wenn der eine oder der andere der Operanden $1$ ist, aber nicht beide. Die folgende Wahrheitstabelle zeigt, wie je ein Bit des Plaintext ($p$) mit einem Bit des Key ($k$) zum Ciphertext ($c$) verknüpft werden.

Verschlüsselung:

$p$ $k$ $c = p \,\text{XOR}\, k$
000
011
101
110

Entschlüsselung:

$c$ $k$ $p = c \,\text{XOR}\, k$
000
011
101
110

Die Entschlüsselung funktioniert gleich wie die Verschlüsselung, weil (p XOR k) XOR k = p gilt.

Da wir mir Binärzahlen arbeiten, können wir nun nicht nur Text sondern beliebige Informationen verschlüsseln, wie zum Beispiel Bilder.

Aufgabe E1

  1. Verschlüssle den Binärcode 01101000 01100001 01101100 mit diesem Schlüssel 01010011 01110101 01100111 von Hand.
  2. Schreibe nun einen Code der dieses macht. Falls du Hilfe brauchst, siehe Tipps unten.

Tipps

Aufgabe E2

Ziel dieser Aufgabe ist, deinen Code aus der letzten Aufgabe zu verallgemeinern und eine Funktion für die XOR-Verschlüsselung zu schreiben.

Schreibe eine Funktion encryption_xor_binary(plaintext_bin,key_bin) der du den Plaintext (Cleartext) und den Key als Binärstrings übergibst. Die Funktion nimmt dann die Verschlüsselung vor und gibt den verschlüsselten Binärstring zurück.

Tipps

Aufgabe E3 (optional)

  1. Schreibe eine Funktion encryption_xor(plaintext,key), die einen Klartext plaintext mit dem Schlüssel key mit XOR verschlüsselt. Die Funktion gibt den verschlüsselten Text als Binärstring zurück.
  2. Schreibe eine Funktion decryption_xor(ciphertext_bin,key), die einen verschlüsselten Binärstring ciphertext_bin und den Schlüssel key (Text, nicht binär) entgegennimmt und den verschlüsstelten Text entschlüsselt und als normalen Text zurückgibt.
  3. Teste deine Funktionen mithilfe des folgenden Codes:
# deine Funktionen oben
 
msg = "Kanti Romanshorn, die innovative Schule im Grünen."
key = "Romanshorn"
cipher_bin = encryption_xor(msg,key)
decripted = decryption_xor(cipher_bin,key)
print(decripted) # muss ausgeben: "Kanti Romanshorn, die innovative Schule im Grünen."

Tipps:

  • Verwende von Anfang an sinnvolle Variablennamen, sonst wird der Code sehr schnell unübersichtlich.
  • Einen Binärstring b kannst du wie folgt in eine Dezimalzahl umwandeln: int(b,2)
  • Eine Dezimalzahl d kannst du wie folgt in eine Binärzahl umwandeln: bin(d)
  • Beachte, dass damit umgewandelte Binärzahlen das Präxif 0b haben, welches entfernt werden sollte.
  • Beachte weiter, dass die resultierende Binärzahl 7 oder 8 Bits haben kann, was zu Problemen führen kann. Tipp: Stelle sicher, dass jede Binärzahl 8 Bits hat. Hänge also wenn nötig noch Nullen an.

Aufgabe E4 (optional)

Entschlüssle das folgende Bild mit einem eigenen Code. Der verwendete Schlüsselt findest du unten.

Klicke auf das Bild und lade es dann herunter.

Schlüssel

Tipps

Advanced Encryption System (AES) ist ein symmetrisches Verschlüsselungsverfahren, welches eines der am weitesten verbreiteten modernen Verschlüsselungsverfahren ist. Es gilt (zumindest bis heute) als nicht knackbar. Siehe Slides für Details.

Spannendes Video zu Verschlüsselung, Quanten Computern und SNDL (Store Now, Decrypt Later):

Aufgabe F1

Die folgende Nachricht wurde mit AES-128 CBC verschlüsselt und im Hexadezimalsystem (mehr dazu in Aufgabe unten) dargestellt:

34 02 b9 2d f2 b8 6a c1 bd 77 49 b0 47 61 a7 c6 b3 cf 43 41 09 82 95 01 85 74 95 a7 91 4a 6e 67 4d 4a 28 22 97 22 b6 27 e8 75 b2 ea cd 29 19 bf eb d5 35 00 ea 0f e7 68 aa 3e 21 b6 14 46 20 c6

Die verwendeten Schlüssel sind:

  • Key: 33 06 1c 1e fc 66 07 b6 b5 21 58 e2 34 75 0d ed
  • Initialization Vector: d1 f7 37 76 68 27 24 47 cb 60 2b bf 60 f6 87 64

Entschlüssle die verschlüsselten Nachricht mithilfe eines Online-Tools (z.B. https://cryptii.com/pipes/aes-encryption) oder mithilfe Python (für Fortgeschrittene, siehe Tipps).

AES mit Python

Aufgabe F2

  1. Was ist der Unterschied zwischen symmetrischen und asymmetrischen Verschlüsselungsverfahren?
  2. Wie unterscheiden sich Block- und Key-Längen bei AES-128 und AES-256?
  3. Wie unterscheiden sich ECB und CBC?
  4. Schreibe eine kurze Zusammenfassung von AES in eigenen Worten.

Aufgabe F3

In der Aufgabe oben hast du viele Zahlen im Hexadezimalsystem angetroffen. Studiere nun die Theorie dazu:

Der Computer arbeitet bekanntlich im Binärsystem. In diesem werden aber selbst kürzeste Nachrichten sehr lange.

Beispiel: Wandelt man das Wort „ROMANSHORN“ in 8bit-Unicode/ASCII um, erhält man:

01010010 01001111 01001101 01000001 01001110 01010011 01001000 01001111 01010010 01001110 

Anstelle betrachtet man gerne die zugehörigen Darstellung im Hexadezimalsystem (Zahlensystem mit Basis $16$, Nennwerte $0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f„), denn eine Umrechnung zwischen den beiden ist sehr einfach:

Betrachten wir dazu das zweite Byte von oben: 01001111. Die ersten vier Bits 0100 stehen für die Dezimalzahl $4$, was im Hexadezimalsystem ebenfalls $4$ ist. Die zweiten vier Bits 1111 stehen für $15$, im Hexadezimalsystem ist das F. Somit gilt: $$01001111_2 = 4F_{16}$$

Jetzt können wir die Binärdarstellung von „ROMANSHORN“ ganz einfach ins Hexadezimalsystem umrechnen:

52 4f 4d 41 4e 53 48 4f 52 4e

Aufgaben:

  1. Wandle die Binärzahl 01000001 01000011 01000100 01000011 von Hand ins Hexadezimalsystem um.
  2. Der Binärcode der letzten Teilaufgabe ist der ASCII-Code von welchem Wort (nur Grossbuchstaben)? Löse ohne Hilfsmittel. Tipp: Welche Binärdarstellung hat der Buchstabe 'A' in ASCII?
  3. Wandlie die Hexzahl 4b 53 52 von Hand ins Binärsystem um. Welchem Wort entspricht dies?

Aufgabe F4

  1. Schreibe einen Code (einfach!), der dir einen 16 Byte (128 Bit) langen Zufallsstring mit Hexadezimalzahlen erstellt in der Form e9 50 33 f9 99 81 a1 b8 6c 47 82 3d 84 59 9a bc. Tipp: Mit hex(132)[2:] wandelst du eine Dezimalzahl ins Hexadezimalsystem um und entfernst den Präfix.
  2. Erstelle mit deinem Code von 1. einen Zufälligen 128 bit Schlüssel (Key) und einen 128 bit Initialization Vector (IV).
  3. Verschlüssele mit diesen auf https://cryptii.com/pipes/aes-encryption eine geheime Nachricht, die du deiner Sitznachbar:in schicken möchtest (Keine Idee? Wie wäre es mit einem Flachwitz?). Schicke ihr/ihm die verschlüsselte Nachricht, Key und IV.
  4. Entschlüssele die Nachricht, die du von deiner Sitznachbar:in erhältst.

Aufgabe F5 (einfache Programmieraufgaben, optional)

Programmiere folgende Funktionen:

  • bin_to_hex(binary): übersetzt String mit 8-Bit Binärzahlen (mit Leerschlag getrennt) in Hexadezimalzahlen.
  • hex_to_bin(hexa): umgekehrt
  • string_to_bin(text): übersetzt Text in 8-Bit Binärzahlen
  • string_to_hex(text): übersetzt Text in 8-Bit Hexzahlen

Für alle Aufgaben zu den klassischen Verschlüsselungsmethoden verwenden wir ausschliesslich das Alphabet „ABCDEFGHIJKLMNOPQRSTUVWXYZ“ (26 Grossbuchstaben).

Aufgabe W1

Verschlüssle „XYLOPHON“ von Hand mit Caesar, in dem du um 7 Stellen verschiebst.

Aufgabe W2

Entschlüssle die Nachricht „OSMVAEJVPNRENJFYWNN“ von Hand. Sie wurde mit dem folgenden monoalphabetischen Verfahren verschlüsselt (Alphabet & Schlüssel):

ABCDEFGHIJKLMNOPQRSTUVWXYZ # Alphabet
SOGVNPKWEFLMUJDHZRAIYTBXCQ # Schlüssel

Aufgabe W3

Das wievielte Zeichen der Unicode-Tabelle wird gespeichert in der Zahl 11011001 10110111?

Aufgabe W4

Wandle ohne Hilfsmittel um:

  1. Hex 18 9b b7 e3 → Dez
  2. Welches Wort steckt dahinter? 01101000 01100001 01101100 01101100 01101111
  3. Vergleiche die beiden ASCII-Zeichen:
    1. 01001000 01000001 01001100 01001100 01001111
    2. 01101000 01100001 01101100 01101100 01101111
  • gf_informatik/umgang_inet_sca/verschluesselung.1710077405.txt.gz
  • Zuletzt geändert: 2024-03-10 13:30
  • von sca