String <=> Zahl

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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.
Das Leben ist wie ein Tennisball.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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 :P
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

cofi hat geschrieben:P.S. Das Repo setzt man auf _bevor_ man fertig ist :P
Ist das Erstellen des Repos nicht eigentlich der erste Schritt nach dem Erstellen des Projektordners...
Das Leben ist wie ein Tennisball.
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. :cry:

Wäre über einen Link oder Hinweis sehr dankbar!

Gruß HH
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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'
Das Leben ist wie ein Tennisball.
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
Antworten