Zum Inhalt springen

Privatekey speichern/lesen - Wie?


junghansmega

Empfohlene Beiträge

Hallo zusammen.

Ich versuche einen String asymetrisch zu entschlüsseln, und zwar mit einem private Key, der entweder in einer Datei vorliegt, oder (besser) hardcoded im Programm ist.

Mein Problem: Ich bekomme den Key nicht aus dem Privatekey Objekt heraus, so dass ich ihn in einer datei / einem Array of byte oder sonstwie speichern könnte geschweige denn wieder hinein.


import java.security.KeyPairGenerator;

import java.security.KeyPair;

import java.security.PublicKey;

import java.security.PrivateKey;

import javax.crypto.Cipher;



public class test {


  public static void main(String[] unused) throws Exception {

    //String xform = "RSA/NONE/PKCS1PADDING";

     String xform = "RSA";

    // schlüsselpaar basteln

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

    kpg.initialize(512); // das ist die keysize.

    KeyPair kp = kpg.generateKeyPair();

    PublicKey pubk = kp.getPublic();

    PrivateKey prvk = kp.getPrivate();


// und nun?


  }

}
Ich kann mir den Privatekey ausgeben lassen, aber er sieht doch recht unhandlich aus. Ausserdem kann Ich die Ausgabe nicht wieder in ein Privatelkey Objekt umwandeln:

//so-etwas bräuchte ich:


prvk = "Sun RSA private CRT key, 512 bits

  modulus:          7757990087399372245545218842535435689837578717932563733546606436611179938565607027947506374368865584085133938486865991025283311860284487785959287136070239

  public exponent:  65537

  private exponent: 1944676459950819952848266706519555938060206344174987518725355914073705907056363002781418582255448754169761736661472542780535171274760994730944436037929473

  prime p:          103157019361650556774972644749961036490077599183650824108828733584040085479489

  prime q:          75205644127824294477694346174400168727140830048192821297931289902304232366751

  prime exponent p: 77409082734739349247545351422224603102759147508319939558540798158742502155969

  prime exponent q: 25066635493357857219139650851177156196891287235801516523978990442436084224473

  crt coefficient:  14269828720942853141909471878463833736413263885136741921525376896953678303226" 

(was ich da versuche in den PrivateKey zu laden, ist, was mit entgegenkommt, wenn ich den privatekey einfach per system.out.println ausgebe.

Wie kann ich also ein Privatekey Objekt wieder befüllen?

Dank im Voraus

Link zu diesem Kommentar
Auf anderen Seiten teilen

oder (besser) hardcoded im Programm ist.

Das ist NIE besser, das ist sogar sehr dumm und unsicher, weil Java-Bytecode sehr leicht zu entschlüsseln ist

Mein Problem: Ich bekomme den Key nicht aus dem Privatekey Objekt heraus, so dass ich ihn in einer datei / einem Array of byte oder sonstwie speichern könnte geschweige denn wieder hinein.

Ähm ... RTFM??

java.security.PrivateKey.getEncoded()

Ich kann mir den Privatekey ausgeben lassen, aber er sieht doch recht unhandlich aus.

aha ... und wen interessiert es, ob der "unhandlich" (wie glaubst du sollte er denn aussehen? Ein Bild von deiner wunderhübschen Freundin oder wie??) aussieht? Dich nicht, uns nicht und Java erstrecht nicht.

Wie kann ich also ein Privatekey Objekt wieder befüllen

das war hoffentlich eine Scherzfrage ...

Bearbeitet von tha_specializt
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ääähmmja....

Selbst wenn ich mehr Zeit und weniger Niveau hätte - eine Antwort erübrigt sich wohl, da der Kollege überraschenderweise gesperrt ist:p

Für die von Euch, die trotzdem wissen wollen, wie's geht:

Einem PublicKey Objekt kann man den Schlüssel in handhabbarer Form (als Array of Byte) folgendermaßen entlocken:

byte[] myPublicKeyByteArray = myPublicKey.getEncoded();
Dann kann man mit diesem Array of Byte ein neues PublicKey Objekt "NewPublicKey" folgendermaßen befüllen:
KeyFactory myKeyFactory = KeyFactory.getInstance("RSA");

EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(myPublicKeyByteArray);

PublicKey NewPublicKey = myKeyFactory.generatePublic(publicKeySpec);

Gruß

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...