kryptographi und programmieren

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
vinny
User
Beiträge: 6
Registriert: Freitag 2. Februar 2018, 01:23

kryptographi und programmieren

Beitragvon vinny » Freitag 2. Februar 2018, 01:43

Hallo Leute,

ich studiere Kryptographi und probiere die ganze Zeit mich in python 3.6.3 aus.
Ich habe eine Rechnung aufgebaut die einfach nicht funktionieren will. Da ich nicht so viel Erfahrung im programmieren habe wollte ich mal die Programmierer fragen ob sie das Programm so schreiben würden oder etwas verändern würden. Das Programm macht mir alles bis zur line 16... Dann hängt er sich auf und ich muss mit Strg + c abbrechen. Wo liegt der Fehler, kann jemand mir helfen?
Wäre würden jeden Vorschlag dankbar..... Gruß vinny

>>> def pow_mod(x, y, z):
... "Calculate (x ** y) % z efficiently."
... number = 1
... while y:
... if y & 1:
... number = number * x % z
... y >>= 1
... x = x * x % z
... if y % 2 != y_parity:
... y = -y % p
... return number
...
>>> p = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f
>>> compressed_key = '0207843cb94c2398d41b34870d23d09143fab3d9014fc62eedd766fc54d8281b19'
>>> y_parity = int(compressed_key[:2]) - 2
>>> x = int(compressed_key[2:], 16)
>>> a = (pow_mod(x, 3, p) + 7) % p
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 5, in pow_mod
KeyboardInterrupt
>>> y = (pow_mod(a, (p+1)//4, p)
... uncompressed_key = '04{:x}{:x}'.format(x, y)
File "<stdin>", line 2
uncompressed_key = '04{:x}{:x}'.format(x, y)
^
SyntaxError: invalid syntax
>>> print(uncompressed key)
File "<stdin>", line 1
print(uncompressed key)
^
SyntaxError: invalid syntax
Benutzeravatar
noisefloor
User
Beiträge: 2227
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Re: kryptographi und programmieren

Beitragvon noisefloor » Freitag 2. Februar 2018, 07:27

Hallo,

du musst alle Klammer, die du öffnest, wieder schließen. Also zähl' mal die öffnenden und schließenden Klammern...

Gruß, noisefloor
Benutzeravatar
pixewakb
User
Beiträge: 889
Registriert: Sonntag 24. April 2011, 19:43

Re: kryptographi und programmieren

Beitragvon pixewakb » Freitag 2. Februar 2018, 07:49

Und verwende die Codebox, d. h. beim Pull-down-Menü "Select code" "PY (Python)" auswählen und dann den Quelltext dorthinein einfügen. Das erleichtert es den anderen ungemein...
Sirius3
User
Beiträge: 7044
Registriert: Sonntag 21. Oktober 2012, 17:20

Re: kryptographi und programmieren

Beitragvon Sirius3 » Freitag 2. Februar 2018, 08:23

@vinny: Eingerückt wird immer mit 4 Leerzeichen, nicht mal 5, mal 4, mal 3. Warum hast Du einen Schlüssel, wo die ersten beiden Stellen dezimal, der Rest hexadezimal ist? Klammern und Unterstriche sind wichtig. In der Funktion pow_mod erscheint auf magische Weise die Variable y_parity, das darf nicht sein. Alles was eine Funktion braucht, muß über ihre Argumente kommen. Einrückungen sind wichtig. Schau Dir mal an, wie sich y in der while-Schleife ändert, wenn y & 1 == 0?

Hier der Code nochmal mit den aktuellen Einrückungen:
  1. def pow_mod(x, y, z):
  2.     "Calculate (x ** y) % z efficiently."
  3.     number = 1
  4.     while y:
  5.         if y & 1:
  6.             number = number * x % z
  7.             y >>= 1
  8.             x = x * x % z
  9.             if y % 2 != y_parity:
  10.                 y = -y % p
  11.     return number
vinny
User
Beiträge: 6
Registriert: Freitag 2. Februar 2018, 01:23

Re: kryptographi und programmieren

Beitragvon vinny » Freitag 2. Februar 2018, 22:17

hey Leute danke erstmal für die Beiträge. Cool das ihr so schnell geantwortet habt...... Hier nochmal den Code aber diesmal mit dem Tip wie ich den Code euch besser anzeigen lassen kann.
  1. >>> def pow_mod(x, y, z):
  2. ...      "Calculate (x ** y) % z efficiently."
  3. ...      number = 1
  4. ...      while y:
  5. ...          if y & 1:
  6. ...              number = number * x % z
  7. ...              y >>= 1
  8. ...              x = x * x % z
  9. ...              if y % 2 != y_parity:
  10. ...                 y = -y % p
  11. ...      return number
  12. ...
  13. >>> p = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f
  14. >>> compressed_key = '0207843cb94c2398d41b34870d23d09143fab3d9014fc62eedd766fc54d8281b19'
  15. >>> y_parity = int(compressed_key[:2]) - 2
  16. >>> x = int(compressed_key[2:], 16)
  17. >>> y = (pow_mod(a, (p+1)//4, p)
  18. ... a = (pow_mod(x, 3, p) + 7) % p
  19.   File "<stdin>", line 2
  20.     a = (pow_mod(x, 3, p) + 7) % p
  21.     ^
  22. SyntaxError: invalid syntax
  23. >>> uncompressed_key = '04{:x}{:x}'.format(x, y)
  24. Traceback (most recent call last):
  25.   File "<stdin>", line 1, in <module>
  26. NameError: name 'y' is not defined
  27. >>> print(uncompressed key)
  28.   File "<stdin>", line 1
  29.     print(uncompressed key)
  30.                          ^
  31. SyntaxError: invalid syntax
Benutzeravatar
pillmuncher
User
Beiträge: 1087
Registriert: Samstag 21. März 2009, 22:59
Wohnort: München

Re: kryptographi und programmieren

Beitragvon pillmuncher » Freitag 2. Februar 2018, 22:55

@vinny: Zähl mal die Klammern in Zeile 17. Es sollten gleich viele öffnende wie schließende sein.
In specifications, Murphy's Law supersedes Ohm's.
Sirius3
User
Beiträge: 7044
Registriert: Sonntag 21. Oktober 2012, 17:20

Re: kryptographi und programmieren

Beitragvon Sirius3 » Samstag 3. Februar 2018, 17:25

@vinny: Du solltest schon versuchen, meine Anmerkungen zu berücksichtigen und meine Fragen zu beantworten, sonst kommen wir hier nicht weiter:

Eingerückt wird immer mit 4 Leerzeichen, nicht mal 5, mal 4, mal 3. Warum hast Du einen Schlüssel, wo die ersten beiden Stellen dezimal, der Rest hexadezimal ist? Klammern und Unterstriche sind wichtig. In der Funktion pow_mod erscheint auf magische Weise die Variable y_parity, das darf nicht sein. Alles was eine Funktion braucht, muß über ihre Argumente kommen. Einrückungen sind wichtig. Schau Dir mal an, wie sich y in der while-Schleife ändert, wenn y & 1 == 0?

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder