Cryptool 2 - AES entschlüsseln?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hallo,
Ich bin der Projektleiter des CrypTool 2-Projekts.
CrypTool 2 nutzt und verarbeitet verschiedene Datentypen. Im Fall vom AES werden CrypToolStreams (binäre Datenströme) für die Daten (Geheimtext, Klartext) als Eingaben benötigt und als Ausgaben ausgegeben. Der Schlüssel vom AES kann 128 bit, 192 bit oder 256 bit breit sein (je nach Einstellung der Komponente). Auch er wird er als binäres Datum (Byte-Array) dem AES gegeben.

Im oben aufgeführten Beispiel werden ein Klartext als Text (String) eingegeben. Die Textinput-Komponente ist direkt mit dem oberen AES verbunden. Das geht, führt aber zu einer impliziten Konvertierung von String nach CrypToolStream. CT2 nutzt dafür automatisch UTF-8 als Codierung. Der AES wiederrum liefert im AusgabeStream binäre Daten. Diese werden auch automatisch vom TextOutput als solche erkannt und dann in hexadezimaler Codierung ausgegeben.

Der untere AES erhält nun wiederrum einen String welcher in einen binären Datenstrom implizit umgewandelt wird. So werden die Hex-Werte nicht in einen binären Stream umgewandelt sondern der String an sich. Um allerdings den Inhalt des Strings als binäre Daten zu interpretieren muss dieser bzw sein Inhalt (die Hex-Werte) in binäre Daten umgewandelt werden. Dafür kann man da eine String-Decodierer-Komponente zwischenschalten. Diese wandelt dann die Hexwerte (z.B. A0 1B AF CC... ) in einen Strom binärer Daten um.

Ebenso müssen bei der finalen Ausgabe (unterer AES) die Ausgabedaten von einem binären Strom wieder in Text (String) umgewandelt werden. Dafür brauchen wir eine String-Codierer-Komponente, die dann von ByteArray (der Ausgabe des unteren AES) in einen UTF-8 String umwandelt.

Ebenso gibt man den Key nicht als String bzw Passwort an, sondern man gibt den Key ebenfalls als Hex-String ein, welcher dann in ein Byte-Array umgewandelt wird. Beispiel: "FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF" (16 bytes = 128bit; alle bits auf 1 gesetzt). Dies gibt man in die TextEingabe-Komponente des Keys eing und wandelt das dann ebenfalls mit einer String-Decodierer-Komponente in ein ByteArray um.

Falls das alles zu theorisch ist, habe ich übrigens ein YouTube-Video (Englisch) auf meinem Kryptographie-Kanal, welches genau solche Dinge (Datentypen und Konvertierung) ausführlich erklärt: https://www.youtube.com/watch?v=1P00GGmx7o8

Viele Grüße,
Nils

Vorab: Ich kenne das Tool nicht.

Die Fehlermeldung besagt, daß die (verschlüsselte) Eingabe nicht die Blocklängenkriterien erfüllt. Ohne jetzt nach dem PKCS-Padding-Schema zu schauen, bei AES-256 bedeutet das, daß die Eingabe ein vielfaches von 32 Bytes sein sollte (32,64,96) Deien Angabe hat laut Bild aber nur 95 Bytes.

Das wäre der Punkt, an dem ich zunächst mal schauen würde.

Ergänzung: Anscheinend sind es 95 Zeichen, allerdings 32 Byte. das würde also generell passen. Eventuell sagt die Dokumentation von dem Tool, was genau beim Eingabeformat zu beachten ist? Vielleicht so etwas banales wie ein fehlendes Leerzeichen am Ende (oder eines zu viel), oder ein Linefeed o.ä..