Servus Miteinander,
ich möchte euch hier ein kleines Computerprogramm vorstellen welches Ich im Rahmen meiner Seminararbeit Geschaffen habe. Thema der Arbeit war Implementierung von RSA. Warum möchte ich euch das vorstellen? Nun, das Programm funktioniert zu meiner Zufriedenheit, entspricht halbwegs den Anforderungen des BSI und vor allem möchte ich keine Software Schreiben nur damit der Lehrer sie als einziger Mensch der Welt einmal ausprobiert. Außerdem möchte ich denjenigen die noch eine Seminararbeit in Mathematik/Informatik schreiben zeigen dass falls ein Programm implementiert wird nicht immer die Mainstream Thematiken wie ENIGMA Cäsar oder Vinegre behandelt werden müssen. So nun zum Programm selbst es war insbesondere mein Ziel nicht auf vorgefertigte Bibliotheken zurückzugreifen sondern das Programm von Grund auf selber zu gestalten obwohl dadurch natürlich eine massiv höhere Laufzeit entsteht. Deswegen habe ich sämtliche Mathematischen Operationen selbst Implementiert. Das Programm besitzt 3 Funktionen
1.) Schlüsselerzeugung
Diese Funktion wird durch den Modus K aufgerufen.
Die Datei N bezeichnet das Primfaktorprodukt des Schlüssels.
Die Datei d bezeichnet den privaten Entschlüsselungsexponenten.
Die Datei e bezeichnet den öffentlichen Verschlüsselungsexponenten.
Die Schlüssellänge wird hier in Vierfachen Bytes Angegeben 1 ^= 32Bit.
Die Schlüssellänge wird vom Programm zufällig zwischen der Minimalen und Maximalen Länge Ausgewählt.
Nun muss man 2 mal hintereinander irgendwas zufälliges auf der Tastatur eingeben bis das Programm mit der Schlüsselerzeugung beginnt.
Zum Schluss werden in dem Ordner von dem das Programm gestartet wurde der Schlüssel N d und e abgelegt.
2.) Verschlüsselung
Zum verschlüsseln muss man ein bereits erzeugtes e und N angeben welche im Ordner liegen von dem aus das Programm gestartet wird des weiteren muss man die Datei angeben welche Verschlüsselt werden soll diese muss ebenfalls an dem selben Ort liegen.
3.) Entschlüsselung
Zum entschlüsseln muss man ein bereits erzeugtes d und N angeben welche im Ordner liegen von dem aus das Programm gestartet wird des weiteren muss man die Datei angeben welche Entschlüsselt werden soll diese muss ebenfalls an dem selben Ort liegen.
Ich würde es schon finden wenn ich ein bisschen Feedback erhalten würde. Bitte nicht über Rechtschreibfehler im Code wundern. In der Zipdatei ist der Quellcode falls mir jemand nicht traut und selber Compilieren will andernfalls ist die Anwendung noch für Linux Compiliert drinnen. Anwendung startet nur direkt aus der Konsole.
Implementierung von RSA
Moderatoren: MaxZ, ebastler, SeriousD
-
- Beiträge: 713
- Registriert: Sa 11. Mai 2013, 15:31
- Spezialgebiet: Kaffee
- Wohnort: Bayern
- Hat sich bedankt: 15 Mal
- Danksagung erhalten: 52 Mal
- Kontaktdaten:
Implementierung von RSA
- Dateianhänge
-
- RSA.7z
- Programm und Code
- (23.46 KiB) 140-mal heruntergeladen
KAFFEE SCHWARZ
-
- Beiträge: 713
- Registriert: Sa 11. Mai 2013, 15:31
- Spezialgebiet: Kaffee
- Wohnort: Bayern
- Hat sich bedankt: 15 Mal
- Danksagung erhalten: 52 Mal
- Kontaktdaten:
Re: Implementierung von RSA
Wenn mir jemand was schicken will hier mein Öffentlicher Schlüssel
- Dateianhänge
-
- Schlüssel.7z
- Schlüssel
- (357 Bytes) 139-mal heruntergeladen
KAFFEE SCHWARZ
-
- Beiträge: 430
- Registriert: Sa 17. Jan 2015, 10:55
- Schule/Uni/Arbeit: Physikstudium
- Wohnort: Bernbeuren
- Hat sich bedankt: 132 Mal
- Danksagung erhalten: 9 Mal
Re: Implementierung von RSA
Hallo
Ich kann das ganze nicht ausführen, aber ich finde das Projekt (soweit ich den Quellcode verstehe) sehr gelungen.
Hoffentlich bekommst du 15 Punkte.
Gruß Daniel
Ich kann das ganze nicht ausführen, aber ich finde das Projekt (soweit ich den Quellcode verstehe) sehr gelungen.
Hoffentlich bekommst du 15 Punkte.
Gruß Daniel
-
- Beiträge: 621
- Registriert: Fr 18. Dez 2009, 22:18
- Spezialgebiet: MCUs, HF, IT
- Hat sich bedankt: 5 Mal
- Danksagung erhalten: 5 Mal
- Kontaktdaten:
Re: Implementierung von RSA
Hallo ferrum,
dein C-Code ist ... nunja, mehr als gewöhnungsbedürftig
und ähnliche Konstrukte *hihi*
Gleiches gilt auch für die Implementation des Square-and-Multiply Algos...
Du speicherst Quelltext in Header-Dateien (RSA.h usw.), das ist auch eher so gewöhnungsbedürftig
Und Crypt und Encrypt sind das gleiche.. Encrypt und Decrypt oder so wären vielleicht besser gewesen.
Dein system("sleep 15") auch eher so
EDIT: Und ähhm. key=CreateKey(max,min,stdout,stdin); Einer externen Funktion die stdout/stdin Streams zu übergeben ist auch eher seltsam
Anyway: Hier mal eine "geheime" Nachricht:
Base64't für den Transportweg
Viele Grüße,
Manawyrm
dein C-Code ist ... nunja, mehr als gewöhnungsbedürftig
Code: Alles auswählen
if((((*Exponent).zahl[i]&(0x1<<b))>>(b))==1)
Code: Alles auswählen
table =malloc(2*sizeof(PSTR));
(table[0]).s=malloc(sizeof(SIGNEDBIGNUMBER));
(*(table[0]).s).num=malloc(sizeof(BIGNUMBER));
(*(*(table[0]).s).num).zahl=malloc(sizeof(BYTES));
(*(*(table[0]).s).num).zahl[0]=0x1;
(*(*(table[0]).s).num).length=1;
Gleiches gilt auch für die Implementation des Square-and-Multiply Algos...
Du speicherst Quelltext in Header-Dateien (RSA.h usw.), das ist auch eher so gewöhnungsbedürftig
Und Crypt und Encrypt sind das gleiche.. Encrypt und Decrypt oder so wären vielleicht besser gewesen.
Dein system("sleep 15") auch eher so
EDIT: Und ähhm. key=CreateKey(max,min,stdout,stdin); Einer externen Funktion die stdout/stdin Streams zu übergeben ist auch eher seltsam
Anyway: Hier mal eine "geheime" Nachricht:
Code: Alles auswählen
fKoE/NPMhqcEgULnTq6nqV9UxEV6R9l3qmPQo1Xf6bffzDiVu49HNl1xRYRJ0FnYn/o6ksAjFVtZ
iy9hleLILVmDEeIumHq6uvDzuFjeKzSdYJrMF5gcYXt6Fbh1hDcP5Mi90Pi4BMMSR4dVxLwmhlsy
fI3F/aJyuJC4Hh52i5ZMWwzmF1Ow994ITDJk5tpn+j41FkUaMIufPWkmorhObSwt6OBaGTjk+OA1
kZ8IpiKQKD6dzNF3C9yf2wi/sdMa
Viele Grüße,
Manawyrm