2017-04-11 381 views
1

問:是否可以從Java密鑰庫中讀取RSA密鑰對?是否可以從公鑰中捕獲公鑰對象標識?將RSAPI公鑰轉換爲X509Certificate(Java)

我已經使用Java Keytool生成了帶有SHA1 2048位密鑰的RSA,並將密鑰對存儲在JKS文件中。我可以使用這裏的代碼加載密鑰:https://stackoverflow.com/a/26711907/1203182但是我得到一個RSAPublicKey,而不是X509Certificate。 RSA公鑰沒有任何方法從公鑰中找到主題標識或DN。

有沒有辦法轉換RSA公鑰或以某種方式從它派生X509證書?或者,也許我只是不理解某些東西。

回答

1

和往常一樣,我這張貼後,來到了我自己的答案秒。談談橡皮鴨編碼。解決辦法很簡單,我找錯了地方。下面的代碼片段...

Key key = keystore.getKey(alias, "password".toCharArray()); 
if (key instanceof PrivateKey) { 
    // Get certificate of public key 
    Certificate cert = keystore.getCertificate(alias); 

    //Answer > get the DN from 'cert.getSubjectDN()` 

    // Get public key 
    PublicKey publicKey = cert.getPublicKey(); 
    //publicKey is NOT where you can get the certificate DN.... 
-1

我會推薦在處理Java中的加密和解密時使用Bouncy Castle。

這裏是有可能給你一些信息(我認爲他想,只要你想這樣做):

Read public key from file in keystore

的代碼示例有看起來像這樣:

PEMParser pemParser = new PEMParser(new StringReader(certPEMData)); 
    Object parsedObj = pemParser.readObject(); 
    System.out.println("PemParser returned: " + parsedObj); 
    if (parsedObj instanceof X509CertificateHolder) 
    { 
     X509CertificateHolder x509CertificateHolder = (X509CertificateHolder) parsedObj; 
     return x509CertificateHolder.getSubjectPublicKeyInfo().getPublicKeyData().getString(); 
    } 
    else 
    { 
     throw new RuntimeException("The parsed object was not an X509CertificateHolder."); 
    } 

在這裏你有充氣城堡圖書館的網站,它也應該有一些信息給你:

Bouncy Castle

如果你懶惰這裏是鏈接到他們的最新版本。將JAR文件包含在構建路徑中,然後您可以複製粘貼上面的代碼。

Bouncy Castle library direct download

相關問題