Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Java
You last visited: Today at 12:32

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Java] RSA Implementierung

Discussion on [Java] RSA Implementierung within the Java forum part of the Coders Den category.

Reply
 
Old   #1

 
snow's Avatar
 
elite*gold: 724
Join Date: Mar 2011
Posts: 10,479
Received Thanks: 3,318
[Java] RSA Implementierung

Guten Abend,

ich mache momentan ein wenig auf dem Gebiet der Kryptographie und habe zusammen mit einem Freund mal den RSA Algorithmus implementiert. Das ganze ist relativ schlampig geschrieben und für eine richtige Verwendung muss natürlich noch einiges angepasst werden.

Bezout.java:


PublicKey & PrivateKey:


RSA.java:


Verwendung:

Code:
RSA r = new RSA();
List<Integer> e = r.encrypt("Hallo, das ist ein Test!");
String d = r.decrypt(e);
System.out.println(e);
System.out.println(d);
Output:

Quote:
[7484230, 25519014, 16496664, 16496664, 4431689, 30090520, 18294078, 24305863, 25519014, 19679855, 18294078, 23172419, 19679855, 19597773, 18294078, 17379383, 23172419, 25257367, 18294078, 19783768, 17379383, 19679855, 19597773, 1102907]
Hallo, das ist ein Test!
Formal sieht das ganze so aus:

encrypt: m x eKey -> c
decrypt: c x dKey -> m

Evtl. lernt jemand ja was dadurch.
snow is offline  
Thanks
12 Users
Old 04/05/2014, 23:57   #2

 
elite*gold: 0
Join Date: Mar 2013
Posts: 2,449
Received Thanks: 6,446
Nice one.

MfG
Lord iRemix is offline  
Thanks
1 User
Old 04/09/2014, 12:51   #3
 
BigJk's Avatar
 
elite*gold: 681
Join Date: Aug 2010
Posts: 521
Received Thanks: 106
Moin, hab da noch ein paar kleine Anmerkungen ^^ Ich weiß nicht wie weit du in dem Thema bist, daher kann es sein das ich dir jez nur Sachen sage die du eh schon weißt.

1.

Warum hast du in deiner PrivateKey Klasse noch Phi, p, q. Diese werden doch nur während der Key Generation gebraucht.


2.

Ich würde dir empfehlen die Nachrichten beim Ent- und Verschlüsseln in Blöcke zu teilen, so werden die Nachrichten kleiner.

Du kannst ja Zahlen bis zu der Größe von n verschlüsseln, also kannste ja sowas machen:

Angenommen n = 110

Du willst z.B. 'ABCDE' verschlüsseln. Wir gehen dabei mal davon aus das A die Zahl 1 repräsentiert usw. und das wir nur Buchstaben im Alphabet verschlüsseln und ohne Groß- und Kleinschreibung.

Somit haben wir dieses Alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' und unsere höchste Zahl wäre die 26 ( 26 = Z )

In n passt die 26 mind. 4 mal rein. Somit können wir bis zu 4 Zeichen in einem verschlüsseln.

Also teilen wir 'ABCDE' in 'ABCD' und 'E' wandeln dies in eine Zahl um:

'01020304' und '05'

Diese Blöcke verschlüsselt man nun.


3.

Quote:
encrypt: m x eKey -> c
decrypt: c x dKey -> m
Das stimmt so nicht.

Encrypt: m ^ e % n = c
Decrypt: c ^ d % n = m

( '^' steht hier für das Potenzieren )

Im Programm selber machst du es aber wieder richtig indem, da du ModPow benutzt...

4.

Was soll Bezout heißen und warum hast du da ne Funktion drinnen zum ggT ermitteln und benutzt sie nit?


So, ich denke das wars, falls ich mich selber irgendwo vertan habe oder du noch Fragen hast werde ich diese gerne beantworten
BigJk is offline  
Thanks
1 User
Old 04/09/2014, 13:10   #4

 
snow's Avatar
 
elite*gold: 724
Join Date: Mar 2011
Posts: 10,479
Received Thanks: 3,318
Heyho,

1) korrekt, die werden nur zur Generierung gebraucht, ich wollte es nur in der Klasse haben, da das ganze ja das veranschaulichen sollte, was ich in der Theorie gelernt habe - private Eigenschaften und öffentlich bekannte Eigenschaften. Kann man in einer "richtigen" Implementierung eigentlich auch vernachlässigen, korrekt.

2) danke für den Tipp

3) Das ganze sollte eigentlich eher den Ablauf der Funktion an sich darstellen, encrypt wendet die Parameter m und eKey auf sich an und resultiert in c, bei decrypt dann c und dKey, das in m resultiert. Hatte noch überlegt, ob ich die eigentliche Funktion definiere, da wäre dann m ^ e % n = c natürlich richtig.

4) Das ganze ist das Lemma von Bézout (Lemma von Bézout ? Wikipedia), so erhalte ich den privaten Key für die Entschlüsselung. Die ggT Funktion wird eigentlich gar nicht benötigt, ich hatte davor eine andere Klasse geschrieben, daraus ist dann die Bézout Klasse entstanden. Einfach ignorieren.

Das Buch, das ich verwende, ist übrigens dieses hier:
snow is offline  
Old 04/09/2014, 17:50   #5
 
BigJk's Avatar
 
elite*gold: 681
Join Date: Aug 2010
Posts: 521
Received Thanks: 106
1. Ok

2. Jo kein ding ^^

3. Ist halt nur nicht klar ersichtlich das du das meinst und ich denke jemand der keine Ahnung davon hat erkennt das noch weniger.

4. Aso, hatte nicht dran gedacht das das damit zusammen hängen könnte xD Hab selber bisher zum Modularen Inverse bestimmen immer den Erweiterten Euklidischen Algorithmus genutzt, hatte mich dahingehend nicht mit anderen Algorithmen beschäftigt ^^
BigJk is offline  
Reply


Similar Threads Similar Threads
CenWR - C++ HotKey Base + HWID System Implementierung
01/17/2015 - WarRock Hacks, Bots, Cheats & Exploits - 11 Replies
CenWR - C++ HotKey Base Ich hatte heute vor, eine kleine HotKey Base zu schreiben. Sie ist leicht erweiterbar. Es müssen nur die Adressen angepasst werden. Für jemanden, der C++ halbwegs beherrscht, sollte es kein Problem geben. Außerdem wird das HWID System von Elitepvpers verwendet. (Mehr hier). Download
[D2NT 3.0] Goldbarb/Find Item Implementierung Testversion
03/05/2011 - Diablo 2 Programming - 22 Replies
Anmerkung: Ich werde hier keine Aktualisierungen mehr einfügen, da mir der Aufwand einzelne Scripts zu isolieren zu hoch ist. Die hier hochgeladene Version ist nicht mehr aktuell, eine aktuelle Version findet sich in meinem Komplettpaket. Hallo zusammen, nach meinem Patzer beim Itemlog bin ich euch was schuldig glaube ich. :( Darum gibts hier nun meine Find Item Implementierung. Ist in meinen Augen definitiv noch nicht perfekt, auch wenn sie sogesehen ziemlich rund läuft und...
Metin2Bay Ideen für Pserver implementierung
10/15/2009 - Metin2 PServer Guides & Strategies - 12 Replies
Hallo, Da eig. fast alle NPCs Quests sind dachte ich mir man könnte doch einfach mal die Idee aufschnappen die sie bei Metin2.de hatten und sie als Quest umsetzen. Da die Quests auch Datenbank Operationen durchführen ist es möglich allerdings könnte die Umsetzung ein Problem werden da ich es machen könnte aber keine Ahnung habe wie das Später aussehn soll. Umsetzung wie ich es machen würde(Simple umsetzung): Meine Vorstellung war jetzt das man auf den Marktplatz geht einen NPC anklickt...
[Suche] Script mit OCR-Implementierung
08/29/2007 - General Coding - 8 Replies
guten Tag Coder-Community, ich suche nun seit geraumer Zeit eine Möglichkeit eine Bilddatei im Format 20x15px per OCR auszulesen und auszuwerten. Hierbei handelt es sich lediglich um eine Bilddatei ohne weitere Störungen mit einer einheitlichen Hintergrundfarbe und einer bestimmten Zahl von 5-80. Nun bräuchte ich jedoch eine Möglichkeit, am besten in PHP diese Bilddatei einzulesen und die Zahl dahinter rauszubekommen. Gibt es ein Web-Script, der dies erledigt? Wenn es wirklich von nöten...



All times are GMT +1. The time now is 12:32.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.