Seite 1 von 2
RSA-Kryptosystem
Verfasst: Donnerstag 20. Oktober 2011, 17:24
von brauny94
Hallo, ich brauche dringend Hilfe!!!
seit einiger Zeit arbeite ich an der Implementierung des RSA-Kryptosystems, da ich trotz einiger Tutorials immernoch aufgeschmissen war, habe ich versucht, einen bereits in Java implementierten Code ins Python-Format umzuschreiben. Leider hatte ich damit keinen wirklichen Erfolg und bin jetzt eher noch ratloser als vorher.
Ich muss dazusagen, dass ich mich zwar in den Grundzügen mit Python auskenne, aber sobald es an speziellere Methoden geht bin ich schnell überfordert (die komplexität des RSA-Verfahrens war mir anfangs nicht so ganz klar

)
Theoretisch, also mathematisch, habe ich RSA verstanden, aber ich habe keinen Plan, wie ich das in Python umsetzen könnte!
Ich wäre für jede Hilfe dankbar, mit der auch ein nicht so versierter Python-Nutzer umgehen kann!
Danke schonmal für die (hoffentlich baldigen) Antworten
Re: RSA-Kryptosystem
Verfasst: Donnerstag 20. Oktober 2011, 17:28
von T64
Falls es dir nicht um den Weg, sondern das Ziel geht, könntest du dir dieses Modul angucken:
http://stuvel.eu/rsa
Re: RSA-Kryptosystem
Verfasst: Donnerstag 20. Oktober 2011, 17:30
von lunar
@brauny94: Die übliche Antwort: Zeige uns, wie weit Du bist und welchen Quelltext Du bis jetzt hast, und wir werden Dir dabei helfen, Fehler zu finden und zu korrigieren. Wir werden Dir aber nicht Deine Aufgaben für Dich lösen.
Falls Du RSA nur anwenden möchtest, dann implementiere RSA nicht selbst, sondern nutze
pycrypto. Eine eigene Implementierung ist fehleranfällig und mithin unsicherer als eine bereits von vielen getestete Implementierung. Zudem ist eine reine Python-Implementierung wahrscheinlich zu langsam für den produktiven Einsatz.
Re: RSA-Kryptosystem
Verfasst: Donnerstag 20. Oktober 2011, 17:35
von brauny94
Vielen Dank!!,
ich werde mir das mal genauer ansehen!
Dennoch wäre ich für weitere Hilfe bezüglich der Implementierung sehr dankbar!!
Re: RSA-Kryptosystem
Verfasst: Donnerstag 20. Oktober 2011, 17:36
von Dav1d
Dazu brauchen wir deinen Code...
Re: RSA-Kryptosystem
Verfasst: Donnerstag 20. Oktober 2011, 17:41
von brauny94
@lunar
ich würde den Code gerne einfügen, aber leider muss ich zum öffnen von Aptana (da Programm, das ich verwende) erst eine neue Java-Version downloaden, und da ich auf dem Land wohne ist unsere Internetverbindung seehr langsam; ich werde den Code so bald wie möglich nachreichen!
Re: RSA-Kryptosystem
Verfasst: Donnerstag 20. Oktober 2011, 17:52
von lunar
@brauny94: Du kannst den Quelltext doch einfach in einem anderen Editor öffnen?! Für Windows kannst Du beispielsweise notepad++ verwenden, dessen Minimalversion ist zum Download weniger als ein Megabyte groß.
Re: RSA-Kryptosystem
Verfasst: Donnerstag 20. Oktober 2011, 19:17
von cofi
lunar hat geschrieben:@brauny94: Du kannst den Quelltext doch einfach in einem anderen Editor öffnen?! Für Windows kannst Du beispielsweise notepad++ verwenden, dessen Minimalversion ist zum Download weniger als ein Megabyte groß.
Kommt Windows nicht mehr selbst mit Notepad? Zum kopieren sollte das gerade noch reichen.
Re: RSA-Kryptosystem
Verfasst: Freitag 21. Oktober 2011, 13:16
von brauny94
Code: Alles auswählen
p = input("p")
q = input("q")
def Keys (p, q):
m = p * q
phi = (p-1)*(q-1)
def publicKey (phi):
akT = 0
e = 2
while akT != 1:
e = e + 1
akT = int(ggT(e, phi))
return e
def ggT (a, b):
x = a
y = b
while x < y or x > y:
if x-y < 0:
x = x + a
else:
y = y + b
return a*b/x
def SecretKey (e, phi):
i = 0
i = i + 1
while (i*phi + 1)%e !=0:
return (i*phi + 1)/e
# print ("public Key: " + e + m)
# print ("secret Key: " + (i*phi + 1)/e)
Klartext = input("Klartext: ")
def RSA_Crypt (basis, exponent, modulus):
sum = 0
mask = 1
ergebnis = 1
while (sum < exponent):
if ((exponent&mask) != 0):
ergebnis = (ergebnis*basis) % modulus
sum = sum + (exponent&mask)
basis = (basis*basis) % modulus
mask = mask << 1
return ergebnis
def RSA_encode (Klartext):
Chiffre = ""
while ((Klartext.length % Math.floor((M-1)/8)) != 0):
Klartext = Klartext + " "
for (i=0; i < Klartext.length; i++):
tmp = Klartext.charCodeAt(i)
j = 1
while (((j+1)*8) < BlkLen):
tmp = tmp << 8
tmp = tmp + Klartext.charCodeAt(i+j)
j++
if (j > 0) i = i + (j-1)
Chiffre = Chiffre + " " + String(RSA_crypt(parseInt(tmp), e, m))
return Chiffre
So, ich bin mir bewusst, dass in diesem Code massenhaft Fehler sind, aber wenn ich wissen würde wie ich es richtig machen soll, würde ich hier nicht um Hilfe bitten!
Was mir warscheinlich sehr helfen würde, ist ein Quellcode einer RSA-Verschlüsselung, an dem ich mich orientieren kann.
Mein Ziel ist nicht eine optimale, elegante oder schnelle RSA-Verschlüsselung, sondern einigermaßen funktionieren soll sie, um das grundsätzliche Verfahren asymmetrischer Kryptosysteme zu veranschaulichen!
Re: RSA-Kryptosystem
Verfasst: Freitag 21. Oktober 2011, 13:22
von Hyperion
Wo hast Du das denn her? Hast Du das selber programmiert? Wenn nein, dann mach Dich lieber selber ans Werk, wenn ja: Wie kommt es zu so langem Code, der noch (offensichtliche) Fehler enthält?
Wo genau liegen denn jetzt Deine Probleme? Du solltest da imho schon präziser formulieren, wo es noch hapert oder wo Funktionalität fehlt. Ggf. anhand eines Datensatzbeispiels?
Bei so langem Code würde ich vorschlagen, den in ein Paste-Bin auszulagern, etwas paste.pocoo.org.
Zudem bietet dieses Forum spezielle Code-Tags für Pythonprogramme. Damit gäbe es ein hübsches Syntaxhighlighting.
Re: RSA-Kryptosystem
Verfasst: Freitag 21. Oktober 2011, 13:34
von lunar
@brauny94: "for (i=0; i < Klartext.length; i++):"?! "while (i*phi + 1)%e !=0: return (i*phi + 1)/e"?! Der Quelltext entbehrt ja bereits syntaktischer und semantischer Korrektheit, über die eigentliche Logik des RSA-Verfahren braucht man in diesem Stadium noch gar nicht nachdenken.
Mit Verlaub, beherrscht Du überhaupt die Grundlagen von Python?
Re: RSA-Kryptosystem
Verfasst: Freitag 21. Oktober 2011, 15:45
von Dav1d
@lunar, das ist cython!!!
Re: RSA-Kryptosystem
Verfasst: Freitag 21. Oktober 2011, 16:39
von BlackJack
@Dav1d: Hast Du da vielleicht einen Smiley vergessen? Das ist kein Cython, das sieht nach Java aus.
Re: RSA-Kryptosystem
Verfasst: Freitag 21. Oktober 2011, 16:46
von sabram
brauny94 hat geschrieben:
[...]habe ich versucht, einen bereits in Java implementierten Code ins Python-Format umzuschreiben. [...]
Re: RSA-Kryptosystem
Verfasst: Freitag 21. Oktober 2011, 16:47
von Hyperion
sabram hat geschrieben:brauny94 hat geschrieben:
[...]habe ich versucht, einen bereits in Java implementierten Code ins Python-Format umzuschreiben. [...]
Tja, versucht trifft es hier

Re: RSA-Kryptosystem
Verfasst: Freitag 21. Oktober 2011, 19:44
von darktrym
Mir hat damals die Geschichte
"Dialog der Schwestern" aus der Ct da sehr weitergeholfen für das Verständnis von RSA.
Re: RSA-Kryptosystem
Verfasst: Samstag 22. Oktober 2011, 11:14
von T64
Ich habe mir gerade mal die Geschichte durchgelesen und bin ganz fasziniert davon.
Aber warum braucht man ein Nebenmodul, kann man nicht einfach, ich sage jetzt mal in Python Fachsprache, ein dict mit dem Alphabet und den zugehörigen Resten bei der Division mit einem bestimmten Schlüssel erstellen und dann den Rest bei einer Division eier gegebenen Zahl damit vergleichen?
Re: RSA-Kryptosystem
Verfasst: Sonntag 23. Oktober 2011, 14:14
von brauny94
Wie gesagt ist mir durchaus bewusst dass mein Quelltext, gelinde gesagt, falsch ist.
Aber ich, offensichtlich kein python-experte, war zugegebenermaßen überfordert ohne Anhaltspunkte oder Hilfen selbst RSA zu programmieren. Die einzige Hilfe die ich hatte war der Java-code, sonst konnte ich weder im Internet oder in Büchern Hilfen finden. Also musste ich versuchen, mit nur dem java-code und nur den grundkenntnissen von Python etwas so komplexes und (meiner Meinung nach) schwieriges zu implementieren wie RSA.
Wirklich weiterhelfen würde mir, wie gesagt, ein fertiger RSA-quellcode, an dem ich mich orientieren kann und versuchen anhand dessen die Funktionsweise von rsa zu erläutern, denn darum geht es mit im grunde, ich möchte die funktionsweise und die mathematik dahinter erklären, aber dazu brauche ich eben einen quellcode, den zu programmieren ich selbst offensichtlich nicht in der lage bin!
Wenn mir also irgendjemand mit einem rsa-code weiterhelfen kann, dann wäre ich ihm sehr zu dank verpflichtet (der rsa-code muss keineswegs perfekt sein!)
Re: RSA-Kryptosystem
Verfasst: Sonntag 23. Oktober 2011, 14:24
von Dav1d
Ich denke dir würde mehr helfen, wenn du erstmal die Grundlagen von Python lernst. RSA hat ja an sich nichts mit Python zu tun, d.h. wenn du Python beherrscht sollte es dir auch möglich sein den Algo zu implementieren.
Re: RSA-Kryptosystem
Verfasst: Sonntag 23. Oktober 2011, 15:31
von lunar
@brauny94: Dir wurde doch bereits in ersten Antwort ein Link zu einem in Python implementierten RSA-Modul gegeben. Wenn Du nur fertigen Quelltext möchtest, wieso nimmst Du dann nicht einfach das? Wenn Du RSA nur anhand von Quelltext erklären möchtest, reicht dann nicht auch der Java-Quelltext? Für die Mathematik hinter RSA braucht es doch eigentlich überhaupt gar keinen Quelltext.