Seite 1 von 2
Re: String <=> Zahl
Verfasst: Mittwoch 11. April 2012, 20:43
von EyDu
Naja, du verwendest Python 3.x, welches Text in unicode-Objekten speichert, und jerchs Beispiel benötigt 2.x, da dort die Strings noch rohe Bytes sind. Bei erstgenanntem gibt es keine hexadezimale Darstellung. Ich bin nicht ganz ohne Grund den Weg über das Encoding gegangen
Edit: Wenn ich es richtig überblicke, hat sich keiner darüber beschwert, dass du zur Übung die Verschlüsselung selbst implementierst. Für mich hörte sich das in dem Fall mehr nach Motivation an. Ich würde behaupten, dass hier fast jeder RSA schon einmal selbst umgesetzt hat.
Re: String <=> Zahl
Verfasst: Mittwoch 11. April 2012, 20:58
von cofi
heiliga horsd hat geschrieben:@cofi: Wie gesagt, das ganze wird nicht praktisch eingesetzt.
Gut mehr wollte ich nicht hoeren
Du kannst das auch gern veroeffentlichen, auch wenn es schlechter Code sein sollte, er nicht fehlerfrei ist o.ae. Das war hier auch gar nicht die Befuerchtung, sondern: Wenn man Kryptographie einsetzt, will man etwas schuetzen und spaetestens bei fremden Daten sollte man sich nach ueberprueftem Code umschauen.
Das war aber kein Angriff auf deine Faehigkeiten oder das Verbot da weiterzumachen, im Gegenteil (sofern das nicht ernsthaft eingesetzt wird

)
Ich wollte nur sicher gehen, dass hinter "Ich bin mir auch bewusst, dass das Ganze nie groß in der Praxis eingesetzt wird" eigentlich ein "ich benutz das nicht, ich schwoers!" steht
P.S. Das Repo setzt man auf _bevor_ man fertig ist

Re: String <=> Zahl
Verfasst: Mittwoch 11. April 2012, 21:01
von EyDu
cofi hat geschrieben:P.S. Das Repo setzt man auf _bevor_ man fertig ist

Ist das Erstellen des Repos nicht eigentlich der erste Schritt nach dem Erstellen des Projektordners...
Re: String <=> Zahl
Verfasst: Mittwoch 11. April 2012, 21:08
von heiliga horsd
Ich habe das Repo lokal

Ich meinte damit eher ein Repo, auf das auch andere in irgendeiner Form Zugriff haben wird es wohl kaum geben...
Daten würde ich mit meinem Script beim besten Willen nicht schützen - es gibt ja schon die fertige Software dafür. Aber meine Gründe warum ich das tue kennt ihr ja schon...
Back to topic:
Code: Alles auswählen
>>> s.encode('utf-8')
b'Hallo Welt!'
>>> for i in s.encode('utf-8'):
... print(i)
...
72
97
108
108
111
32
87
101
108
116
33
Ich habe nur trotzdem keine Ahnung, wie ich das in _eine_ hexadezimale Darstellung bringen kann, hab auch in der Doku und bei Google nichts gefunden.
Wäre über einen Link oder Hinweis sehr dankbar!
Gruß HH
Re: String <=> Zahl
Verfasst: Mittwoch 11. April 2012, 21:38
von EyDu
Code: Alles auswählen
>>> s = "spam, ham and eggs".encode("utf-8")
>>> l = len(s)
>>> integer = sum(v<<8*i for (i, v) in enumerate(s))
>>> integer
10053099401507827668789273780417579937001587
>>> binary = bytes((integer>>8*i) & 255 for i in range(l))
>>> binary
b'spam, ham and eggs'
>>> binary.decode("utf-8")
'spam, ham and eggs'
Re: String <=> Zahl
Verfasst: Mittwoch 11. April 2012, 21:45
von heiliga horsd
EyDu hat geschrieben:Code: Alles auswählen
>>> s = "spam, ham and eggs".encode("utf-8")
>>> l = len(s)
>>> integer = sum(v<<8*i for (i, v) in enumerate(s))
>>> integer
10053099401507827668789273780417579937001587
>>> binary = bytes((integer>>8*i) & 255 for i in range(l))
>>> binary
b'spam, ham and eggs'
>>> binary.decode("utf-8")
'spam, ham and eggs'
OK, da wäre ich wirklich beim Besten Willen nicht drauf gekommen.... Funktioniert Wunderbar! Vielen Vielen Dank!
Gruß HH