Seite 1 von 1

Verschlüsselung von unichr

Verfasst: Freitag 13. Dezember 2013, 02:57
von 52:45:53
Hallo.

wie verschlüsselt man nicht-numerische Zeichen, wie 'a', '&', oder die ersten 31 ASCII/UTF8 Zeichen

Beispiel mit Integern zum ausprobieren, es soll 85 verschlüsselt werden:

Code: Alles auswählen

plaintext = 85
pubKey = [3,101*113]
print pow(plaintext, pubKey[0], pubKey[1]) #9236
Es soll 9236 entschlüsselt werden:

Code: Alles auswählen

ciphertext = 9236
privKey = [7467,101*113]
print pow(ciphertext, privKey[0], privKey[1]) # 85
Anm.: pubKey und privKey sind korrekt. (Für die, die es interessiert siehe RSA, public-key cryptography)

Re: Verschlüsselung von unichr

Verfasst: Freitag 13. Dezember 2013, 06:08
von darktrym
Ich glaube dein Problem ist nicht nur Python sondern auch die Mathematik.

Re: Verschlüsselung von unichr

Verfasst: Freitag 13. Dezember 2013, 10:46
von darktrym
Den Wert eines ASCII Zeichen bekommt man übrigens über die Funktion ord.
UTF-8 Zeichen gibts nicht und warum ist das Schlüsselpaar eine Liste?

Re: Verschlüsselung von unichr

Verfasst: Freitag 13. Dezember 2013, 12:55
von 52:45:53
darktrym hat geschrieben:Den Wert eines ASCII Zeichen bekommt man übrigens über die Funktion ord.
Wird so verschlüsselt, funktioniert die Kodierung nicht, da je nach Modul eine Zahl > 2^7 rauskommt und diese dann nicht in chr umgewandelt werden kann. Würde man dann nochmals modulo 256 rechnen, würde die Verschlüsselung klappen allerdings nicht die Entschlüsselung

Re: Verschlüsselung von unichr

Verfasst: Freitag 13. Dezember 2013, 13:25
von darktrym
Dann behandle Zahlen auch als Zahlen und nicht als Zeichen.

Re: Verschlüsselung von unichr

Verfasst: Freitag 13. Dezember 2013, 13:32
von BlackJack
@52:45:53: Oder um es anders zu formulieren: man verschlüsselt in der Regel keine Zeichen sondern Bytewerte.

Dann kann man nämlich *alles* verschlüsseln, denn letztendlich wird im Rechner alles durch eine Folge von Bytewerten repräsentiert.

Wenn man etwas verschlüsseln möchte was in einer modernen Programmiersprache als abtrakter Datentyp verwendet wird, muss man das in eine Folge von Bytes überführen und dann verschlüsseln. Beim Entschlüsseln geht man den umgekehrten Weg. Die Umwandlung Unicode ↔ Bytes geht ganz einfach über die `encode()`- und `decode()`-Methoden. Da muss man jeweils die gleiche Kodierung angeben. Und es empfiehlt sich eine zu wählen, die alle Unicode-Zeichen abdeckt. Beispielsweise UTF-8.

Re: Verschlüsselung von unichr

Verfasst: Freitag 13. Dezember 2013, 13:40
von 52:45:53
darktrym hat geschrieben:Dann behandle Zahlen auch als Zahlen und nicht als Zeichen.
Ergebnis wäre ein Chiffrat aus einer Zahlenkette, wie soll man das dann korrekt entschlüsseln.
Vielleicht gibt es jemanden mit Praxiserfahrung, der mir einen Tipp geben könnte.

@BlackJack: Das hat geholfen. Aus deinem Post schliesse ich, dass das auch in Python geht. Werde das heute Abend ausprobieren.

Re: Verschlüsselung von unichr

Verfasst: Freitag 13. Dezember 2013, 15:29
von Sirius3
@52:45:53: lies nochmal nach, für was man RSA verwenden kann.

Re: Verschlüsselung von unichr

Verfasst: Freitag 13. Dezember 2013, 15:48
von darktrym
Ich nehme mal an, dein Code wird später nicht produktiv irgendwo eingesetzt also dient nur dem Zweck der Bildung.
Eine sehr einfache Lösung wäre die Zahl als Hexstring abzuspeichern wobei noch dessen Länge davor stehen sollte.