Montag, Januar 27, 2020

Speichern von Schlüssel mittels Keystore

Ich bin mit Schlüsselspeicher schützen private Schlüssel in eine Datei(mit Kennwort für die Datei).Ich Verstand nicht, diesen code

//save my secret key
javax.crypto.SecretKey mySecretKey;
KeyStore.SecretKeyEntry skEntry =
    new KeyStore.SecretKeyEntry(mySecretKey);
ks.setEntry("secretKeyAlias", skEntry, 
    new KeyStore.PasswordProtection(password));

//store away the keystore
java.io.FileOutputStream fos = null;
try {
    fos = new java.io.FileOutputStream("newKeyStoreName");
    ks.store(fos, password);
} finally {
    if (fos != null) {
        fos.close();
    }
}

Was ist setEntry tun??
Sind wir speichern privaten Schlüssel durch fileoutputstream ??Wenn es wahr ist, wo ist das Passwort für die Datei???
Was ist die Endung der Datei??Ist es .jks??

  • Bitte beantworten Sie die Kommentare..ich bin immer nur Antworten auf meine Fragen(geschrieben)nicht auf meine Kommentare, wenn überhaupt…
InformationsquelleAutor user1168647 | 2012-02-07

1 Kommentar

  1. 6

    Einen Java keystore ist ein container für kryptographische Objekte. Es können enthalten symmetrischen Schlüsseln, privaten Schlüsseln und Zertifikaten. Die setEntry() Methode fügt einen weiteren Eintrag hinzu, um den keystore. In deinem Fall bringt es einen symmetrischen Schlüssel identifiziert durch „secretKeyAlias“ mit durch ein Passwort geschützt, um den Schlüssel zu speichern. Wenn Sie sparen wollten einen privaten Schlüssel, sollten Sie erstellt eine KeyStore.PrivateKeyEntry statt.

    Nachdem Sie erstellt haben, eine keystore-Speicher, Sie können speichern auf der Festplatte. Der keystore ist ein store()-Methode, die schreibt dem keystore ein Stream. In diesem Fall ist eine FileOutputStream. Ein MAC wird auch Hinzugefügt, um den keystore, die durch ein Kennwort geschützt. In deinem Fall das Passwort ist das gleiche wie der oben, aber das ist nicht notwendig.

    Den üblichen Erweiterung für einen Java-keystore .jks, aber Ihr code speichert Sie in einer Datei namens „newKeyStoreName“.

    • Danke für deine Antwort..ich habe Zweifel….In setEntry— „skentry“ ist unser Eintrag(unsere Eingabe kann jede Art von Schlüssel)und der 3. parameter ist das Passwort für die Datei, wo „skentry“ gespeichert ist.Ist richtig ist??Bitte klären Sie….
    • Ja, der zweite parameter ist der Eintrag – in deinem Fall sollte es ein PrivateKeyEntry. Der Dritte parameter gibt an, wie der Eintrag geschützt werden sollten. Wenn Sie angeben Passwortschutz in, es wird mit einem Passwort verschlüsselt. Die Datei selbst ist nicht verschlüsselt (nur MACced), aber jeder einzelne Eintrag kann verschlüsselt werden, die unter einem Kennwort.
    • Vielen Dank für deine Antwort Rasmus Faber,Aber ich war hier hängengeblieben,ks.setEntry(„d1“,prvate,new KeyStore.Passwortschutz in(pass)); d1–>ist der alias,prvate–>KeyStore.PrivateKeyEntry prvate=new KeyStore.PrivateKeyEntry(pr,null), (pr, den privaten Schlüssel aus Schlüsselpaar-generator); ich bin immer null-Zeiger-Ausnahme aus, da der 2. parameter sollte Kette(ein array von Zertifikaten), aber ich bin nicht mit keine Zertifikate in meinem code…Was ist die Lösung…
    • Tut mir Leid, aber ich glaube nicht, dass Sie einen privaten Schlüssel ohne Zertifikat in einen Java-keystore. Ich weiß nicht, der Grund für diese Einschränkung. Bitten Sie ggf. eine andere Frage über die beste Lösung, aber ich würde sagen, dass Sie Ihre Optionen ist eine) Verwenden Sie einen anderen Speicher-Mechanismus b) erstellen Sie ein selbst-signiertes Zertifikat zu speichern, die mit dem privaten Schlüssel.

Kostenlose Online-Tests