7 Stimmen

Gibt java.security.Key.getEncoded() Daten im DER-codierten Format zurück?

Do java.security.Key.getEncoded() gibt Daten in DER kodiertes Format?

Wenn nicht, gibt es eine Methode, die das tut?

UPDATE: Eine Schlüsselschnittstelle mit einer Implementierung eines privaten RSA-Schlüssels

4voto

ZZ Coder Punkte 72742

Abhängig von der Art des Schlüssels. Die meisten symmetrischen Schlüssel liefern rohe Bytes ohne Kodierung. Die meisten öffentlichen Schlüssel verwenden ASN.1/DER-Kodierung.

Es sollte Ihnen egal sein, wie der Schlüssel verschlüsselt ist. Behandeln Sie getEncoded als Serialisierungsfunktion. Sie gibt die Byte-Stream-Darstellung des Schlüssels zurück, die gespeichert und später wieder in den Schlüssel umgewandelt werden kann.

Bei privaten RSA-Schlüsseln kann er als PKCS#1 oder PKCS#8 kodiert sein. PKCS#1 ist die bevorzugte Kodierung, da sie zusätzliche CRT-Parameter enthält, die die Verarbeitung privater Schlüssel beschleunigen.

Sun JCE erzeugt Schlüsselpaare immer in PKCS#1-Kodierung, so dass der private Schlüssel immer in diesem in PKCS#1 definierten Format kodiert ist,

-- 
-- Representation of RSA private key with information for the CRT algorithm.
--
RSAPrivateKey ::= SEQUENCE {
    version           Version, 
    modulus           INTEGER,  -- n
    publicExponent    INTEGER,  -- e
    privateExponent   INTEGER,  -- d
    prime1            INTEGER,  -- p
    prime2            INTEGER,  -- q
    exponent1         INTEGER,  -- d mod (p-1)
    exponent2         INTEGER,  -- d mod (q-1) 
    coefficient       INTEGER,  -- (inverse of q) mod p
    otherPrimeInfos   OtherPrimeInfos OPTIONAL 
}

Version ::= INTEGER { two-prime(0), multi(1) }
    (CONSTRAINED BY {-- version must be multi if otherPrimeInfos present --})

OtherPrimeInfos ::= SEQUENCE SIZE(1..MAX) OF OtherPrimeInfo

OtherPrimeInfo ::= SEQUENCE {
    prime             INTEGER,  -- ri
    exponent          INTEGER,  -- di
    coefficient       INTEGER   -- ti
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X