2017-03-22 1 views
1

Was erhalte ich, wenn ich versuche, den öffentlichen und privaten Schlüssel zu drucken, der für RSA im folgenden Code generiert wurde?Was ich bekomme, wenn ich versuche, den öffentlichen und privaten Schlüssel zu drucken, der für RSA im Code unten erzeugt wird?

public void generateKeyPair()throws Exception{ 
    KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA"); 
    keyGen.initialize(1024); 
    KeyPair key = keyGen.generateKeyPair(); 
    System.out.println("Private Key --> "+key.getPrivate()); 
    System.out.println("Public Key --> "+ key.getPublic()); 

} 

Ausgang:

Private Key --> [email protected] 
Public Key --> Sun RSA public key, 1024 bits 
modulus:  91070638360884489717846387624081331865380920530817450364127225655147956614794217905486935019170980669357616099533814798328666299188081771295145969332740783420682208946757921176081598083665454855067910689297215183406707874995244612816580868221470575486438389243678546960355939828269782848832295142018678264741 
public exponent: 65537 

Antwort

3

Für die öffentlichen Schlüssel, modulus und exponent sind zwei Komponenten des öffentlichen RSA-Schlüssel, so ist dies interessante Informationen in lesbarer Weise ausgedrückt und nicht codierte base64 (wie es wäre, wenn Sie den Schlüssel in einer Datei zum Beispiel hätten). Der 1024 bits Teil ist die Länge des Schlüssels, der ein Gefühl für seine Stärke gibt.

Für den privaten Schlüssel macht es keinen Sinn, Informationen über den Schlüssel in toString zu verlieren. Dies ist nur die einfache Standardimplementierung von Object.toString().

1

Sie können privaten Schlüssel und öffentlichen Schlüssel zu base64 codieren, so dass Sie drucken können.

 import org.apache.commons.codec.binary.Base64; 

     KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA"); 
     keyGen.initialize(1024); 
     KeyPair key = keyGen.generateKeyPair(); 
     byte[] privateKey = key.getPrivate().getEncoded(); 
     byte[] publicKey = key.getPublic().getEncoded(); 
     String encodedPrivateKey = Base64.encodeBase64String(publicKey); 
     String encodedPublicKey = Base64.encodeBase64String(privateKey); 
Verwandte Themen