hab mal eine (auch auf das Risiko hin, dass gleich wieder jemand kommt und sagt, soetws gäbe es nicht

Lg HH
Code: Alles auswählen
>>> int("42")
42
>>> float("2.3")
2.3
>>> str("42")
'42'
Code: Alles auswählen
>>> int("Hallo Welt")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'Hallo Welt'
Code: Alles auswählen
>>> data = "cos(α)²+sin(α)²=1"
>>> data.encode("utf-8")
b'cos(\xce\xb1)\xc2\xb2+sin(\xce\xb1)\xc2\xb2=1'
Code: Alles auswählen
>>> s='hallo welt'
>>> int(s.encode('hex'),16)
492923261135231742471284L
>>> i=int(s.encode('hex'),16)
>>> hex(i)
'0x68616c6c6f2077656c74L'
>>> hex(i).strip('0xL').decode('hex')
'hallo welt'
Ich mache es so, wie es [1] erklärt ist. Ich muss halt noch schauen, wie das die Lösungen der Profis machen und was die konkret anders machen, aber prinzipiell funktioniert es ja, also kann schonmal nichtmehr allzuviel falsch sein?EyDu hat geschrieben:Naja, der Begriff "funktionstüchtig" ist durchaus ein sehr dehnbarer Begriff. Du magst zwar ver- und entschlüsseln können, dass heißt aber noch lange nicht, dass deine Schlüsselerzeugung korrekt ist. Das ist nämlicher der schwierige Teil an der ganzen Sache. Daher auch der Hinweis, dass du mit einer fertigen Lösung besser fährst.
Ja, dafür bin ich dir auch sehr dankbar! Auch das komplett ausformulierte Beispiel von jerch ist super, hierfür möchte ich mich auch nochmals herzlich bedanken! Dass man in der Regel nur asymmetrisch den Schlüssel überträgt ist mir durchaus bekannt (wie gesagt, ich habe mich informiert - bei symmetrischen Verfahren braucht man auch bei weitem nicht die Schlüssellänge wie bei asymmetrischen). Das Ganze ist mehr ein didaktisches Projekt, aber trotzdem hat es einen Anspruch auf Vollständigkeit, und dazu gehört halt nunmal auch, dass man Texte oder vielleicht auch Dateien verschlüsseln/signieren kann. Ich bin mir auch bewusst, dass das Ganze nie groß in der Praxis eingesetzt wird, aber es ist halt schonmal schön, etwas großes und wirklich relevantes zu programmieren. Auch wenn man es im Endeffekt nur selber und Just 4 Fun benutzt.EyDu hat geschrieben: Wie man einen String in eine Zahl umwandelt, habe ich in meinem Beispiel ja oben bereits gezeigt. Das in einen Integer zu bekommen ist mit ein paar Shiftoperationen ein Einzeiler. Wenn du so aber tatsächlich die Nutzdaten übertragen willst, dann hast du an asymmetrischer Verschlüsselung etwas falsch übertragen. Normalerweise wird damit nur der Schlüssel übertragen, die Daten werden anschließend Symmetrisch verschlüsselt.
Mach auf das Tor, das Loch mach breit!heiliga horsd hat geschrieben:Ich mache es so, wie es [1] erklärt ist. Ich muss halt noch schauen, wie das die Lösungen der Profis machen und was die konkret anders machen, aber prinzipiell funktioniert es ja, also kann schonmal nichtmehr allzuviel falsch sein?EyDu hat geschrieben:Naja, der Begriff "funktionstüchtig" ist durchaus ein sehr dehnbarer Begriff. Du magst zwar ver- und entschlüsseln können, dass heißt aber noch lange nicht, dass deine Schlüsselerzeugung korrekt ist. Das ist nämlicher der schwierige Teil an der ganzen Sache. Daher auch der Hinweis, dass du mit einer fertigen Lösung besser fährst.
Code: Alles auswählen
>>> s = "Hallo Welt!"
>>> int(s.encode('hex'),16)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
LookupError: unknown encoding: hex
Gut mehr wollte ich nicht hoerenheiliga horsd hat geschrieben:@cofi: Wie gesagt, das ganze wird nicht praktisch eingesetzt.
Ist das Erstellen des Repos nicht eigentlich der erste Schritt nach dem Erstellen des Projektordners...cofi hat geschrieben:P.S. Das Repo setzt man auf _bevor_ man fertig ist
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
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'