Serialisieren und Deserialisieren eines öffentlichen RSA-Schlüssels

8
%Vor%

Ich möchte nur den öffentlichen Schlüssel von einem byte[] erstellen.

Ich habe das als Experiment versucht:

%Vor%

Aber die Entschlüsselung mit diesem Schlüssel schlägt fehl.

Ich habe auch versucht, den Schlüssel mit ObjectOutputStream zu serialisieren, aber die Serialisierung schlägt fehl.

  

java.io.NotSerializableException: org.apache.harmony.xnet.provider.jsse.OpenSSLKey

Ich lese hier , dass ich nicht verwenden kann SecretKeySpec mit RSA.

  

Solange Sie also von einem SecretKey und nicht von einem RSA- oder DSA-Schlüssel sprechen, müssen Sie keine Verzerrungen mit KeyGenerator o.ä.

Jeder weiß, wie man diese Verrenkungen durchführt oder wie man das macht.

    
weston 06.02.2014, 15:03
quelle

3 Antworten

4

Asymmetrische Schlüssel wie die von RSA werden normalerweise im X509-Format gespeichert. Daher können Sie stattdessen X509EncodedKeySpec verwenden.

Ein einfaches Beispiel ist bereits im Java 7 JavaDoc (einfach DSA durch RSA ersetzen): Ссылка

%Vor%

Wenn Sie das private von byte[] deserialisieren müssen, habe ich festgestellt, dass Sie PKCS8EncodedKeySpec verwenden müssen.

    
Robert 06.02.2014, 15:18
quelle
5

Hängt davon ab, was Sie mit der serialisierten Darstellung machen wollen. Wenn der Verbraucher niemand anderes als Ihr eigenes Programm ist, können Sie Ihre eigene Implementierung erstellen. Ein öffentlicher RSA-Schlüssel besteht aus zwei ganzen Zahlen - Exponent und Modul. Der Modul ist groß - etwa 1024 Bits, der Exponent liegt typischerweise in der Größenordnung von 17 Bits. Beide sind als BigInteger -Objekte verfügbar, wenn Sie Ihr öffentliches Schlüsselobjekt auf RSAPublicKey umwandeln.

Also, zur Erinnerung:

%Vor%

Das reicht aus, um den Schlüssel wiederherzustellen. Deserialisieren:

%Vor%

Wenn der Schlüssel an Software von Drittanbietern weitergegeben werden muss, sollten Sie besser in ein Standardformat - PEM oder DER - serialisieren.

    
Seva Alekseyev 06.02.2014 15:23
quelle
0

Ich verwende den folgenden Code, um ein PubliKey in das PEM Base64-Format zu konvertieren

%Vor%

Ich hoffe, es hilft.

    
venergiac 06.02.2014 15:15
quelle

Tags und Links