Decrypt Passwort mit Phyton Code?

2 Antworten

Wo ist dein Problem genau? Und wo hast du dieses Verschlüsselungssystem her?

Grundprinzip sollte sein, die Zeichen (char) der verschlüsselten Nachricht zu nehmen, 18 abzuziehen und durch 123 zu teilen... Da du hier in der Modulo-Welt bist (könnte eine Gruppe oder so sein...) musst du zum teilen die Zahl a finden, die (a*123)%256=1 ist. Das sollte mit erweitertem Euklid gehen. Statt dem teilen multiplizierst du mit der Zahl.

Vom Bauchgefühl würde ich sagen, dass es schwierig werden könnte, da es nicht eindeutig ist. Wäre die 256 eine Primzahl, wäre das Ergebnis eindeutig, da du dann mathematisch einen Körper hättest.

sktburrito123 
Fragesteller
 15.04.2022, 11:19

Hi, ja genau die Rechnung an sich hätte ich so wie du es beschrieben hast auch gemacht bzw. wollte es im code auch so umsetzen, allerdings habe ich es mit der Konvertierung in Hex nicht ganz verstanden in welcher länge man die Blöcke nun auslesen muss. Das Ziel war es ein Text der für uns geheim ist und einmal durch den code gerunnt wurde zurück zu decoden (kann es selbst nicht runnen weil kein packet). Ich würde es stand jetzt gerne händisch versuchen und später nach dem rechnerischen das ganze in einen hex to ascii Converter reinpacken. Wenn du mir beim ersten Buchstaben/Zeichen helfen könntest wäre das schon eine enorme Hilfe für mich. Sobald ich das System verstehe geht der rest denk ich wie Butter.
Danke für die ausführliche Erklärung vorhin!

0
ralphdieter  15.04.2022, 12:40
zum teilen die Zahl a finden, die (a*123)%256=1 ist. Das sollte mit erweitertem Euklid gehen

Python bytes haben 8 Bit. Da wird es einfacher sein, alle 256 Codierungen zu berechnen und nach ihrem Ergebnis zu sortieren.

0
# Der "verschlüsselte" Text
c='6e0a9372ec49a3f6930ed8723f9df6f6720ed8d89dc4937222ec7214d89d1e0e352ce0aa6ec82bf622227bb70e7fb7352249b7d893c493d8539dec8fb7935d490e7f9d22ec89b7a322ec8fd80e7f8921'
# Berechnen der Lookup-Tabelle (da es um Bytes geht, ist der Wertebereich auf 0..255 begrenzt)
t=[(123 * b + 18) % 256 for b in range(256)]
# Je zwei Hex-Ziffern decken exakt den Wertebereich ab. Durch das Verfahren zum berechnen der Lookup-Tabelle entspricht der Eingabewert für jeden Ausgabewert der Position des Ausgabewertes.
p=''.join([chr(t.index(int(c[i:i+2], 16))) for i in range(0, len(c), 2)])
# Ausgabe des "entschlüsselten" Textes
print(p)