Probleme Umwandlung javax.crypto => C++

Cromon

Erfahrenes Mitglied
Hallo zusammen!

Ich versuche momentan gerade eine Funktion, die ich in Java gefunden habe analog in C++ zu übernehmen. Es geht dabei um die Generierung von Blowfish und RSA-Algorithmen. Ich poste mal eben kurz die Funktion in Java
Java:
        public static void init() throws GeneralSecurityException
        {
                blowfishKeyGen = KeyGenerator.getInstance("Blowfish"); // KeyGenerator blowfishKeyGen

                KeyPairGenerator                rsaKeyPairGenerator = KeyPairGenerator.getInstance("RSA");

                RSAKeyGenParameterSpec  spec                = new RSAKeyGenParameterSpec(1024, RSAKeyGenParameterSpec.F4);

                rsaKeyPairGenerator.initialize(spec);

                encryptedRSAKeyPairs = new EncryptedRSAKeyPair[10];

                for(int i = 0; i < 10; i++)
                {
                        encryptedRSAKeyPairs[i] = new EncryptedRSAKeyPair(rsaKeyPairGenerator.generateKeyPair());
                }

                Cipher  rsaCipher = Cipher.getInstance("RSA/ECB/nopadding");

                rsaCipher.init(Cipher.DECRYPT_MODE, encryptedRSAKeyPairs[0].getRSAKeyPair().getPrivate());
        }

Mein Problem ist nun, dass ich nicht genau verstehe was diese Funktionen aus javax.crypto genau machen. Dieser KeyGenerator, was ist das genau? Und was ist bei RSA ein KeyPairGenerator? Hat jemand da zufällig schon Erfahrungen gemacht? Ich kämpfe mich momentan gerade durch die Javadokumentation durch und hoffe jemand von euch kann mir vielleicht da noch bisschen was an Hintergrundinfos liefern, damit ich diese KeyGeneratoren auch in C++ hinbekomm.

Mit bestem Gruss und Dank
Cromon
 
Hi.
Dieser KeyGenerator, was ist das genau?
Es ist offenbar eine Klasse die eine statische Methode besitzt und anhand einer als String übergebenen Spezifikation eine Instanz einer bestimmten Klasse erzeugt und zurückgibt. Siehe http://de.wikipedia.org/wiki/Fabrikmethode

Und was ist bei RSA ein KeyPairGenerator?
Da verhält es sich ziemlich gleich.

Hat jemand da zufällig schon Erfahrungen gemacht? Ich kämpfe mich momentan gerade durch die Javadokumentation durch und hoffe jemand von euch kann mir vielleicht da noch bisschen was an Hintergrundinfos liefern, damit ich diese KeyGeneratoren auch in C++ hinbekomm.
Warum verwendest du denn nicht einfach eine Bibliothek (z.B. crypto++ oder Botan)?

Die Generatoren nützen dir relativ wenig, du mußt schon die konkreten Klassen anschauen.

Gruß
 
Grundsätzlich war mir schon klar, was der Code da macht, ist bisschen schwer auszudrücken. Ich denke mein Problem ist, dass ich mich mit den kryptographischen Algorithmen wirklich praktisch überhaupt nicht auskenne (ich mag das Thema nicht, aber manchmal kommt man nicht drum herum...).

Ich denke mal der KeyGenerator bei Blowfish generiert einfach einen Schlüssel, der für den Blowfishalgorithmus verwendet werden kann. Da hat mir Wikipedia auch schon Vorschläge gemacht, wie das funktioniert. Bei RSA dürfte es sich da ähnlich verhalten, scheinbar benötigt man da aber ein Paar von Schlüsseln und diese stellt der Generator zur Verfügung.

Ich werde mir auf jeden Fall mal die Kryptographiebibliotheken anschauen!

Gruss
Cromon
 
Ich denke mal der KeyGenerator bei Blowfish generiert einfach einen Schlüssel, der für den Blowfishalgorithmus verwendet werden kann. Da hat mir Wikipedia auch schon Vorschläge gemacht, wie das funktioniert. Bei RSA dürfte es sich da ähnlich verhalten, scheinbar benötigt man da aber ein Paar von Schlüsseln und diese stellt der Generator zur Verfügung.
Richtig. Das liegt daran, dass Blowfish ein symmetrisches Verfahren ist (d.h. zum Ver- und Entschlüsseln wird derselbe Schlüssel verwendet), RSA hingegen ein asymmetrisches (d.h. man verwendet zum Verschlüsseln einen anderen Schlüssel als zum Entschlüsseln).

Grüße,
Matthias
 
Zurück