2017-03-22 9 views
1

以下のコードでRSA用に生成された公開鍵と非公開鍵を印刷しようとしていますが、以下のコードでRSA用に生成された公開鍵と非公開鍵を印刷しようとしていますが、

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()); 

} 

出力:

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

答えて

3

公開鍵modulusexponentがRSA公開鍵の2つの成分であるので、これは(Base64エンコードではなく読み取り可能な様式で発現興味深い情報であるためあなたがファイルの中にキーを持っていればそうです)。 1024 bitsの部分はキーの長さで、強さの感覚を与えます。

秘密鍵については、toStringのキーリークに関する情報を許可することは意味がありません。これは、平凡なデフォルト実装のObject.toString()です。

1

プライベートキーと公開キーをbase64にエンコードすると、 を印刷できます。

 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); 
関連する問題