Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Privatekey speichern/lesen - Wie?

Empfohlene Antworten

Veröffentlicht

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

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

Äää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ß

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.