2017-03-22 5 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);