從PEM BASE64編碼的私鑰檔案取得RSA私鑰
在某些場景下,您可能會遇到需要擷取RSA私鑰的情況來自PEM BASE64 編碼的私鑰檔案。嘗試解碼金鑰時,Java 的內建功能可能會導致「InvalidKeySpecException」錯誤。要解決此問題,請考慮以下步驟:
1.了解PKCS 格式:
私鑰有兩種常見的PKCS 格式:PKCS#1 和PKCS# 8。 PKCS#1 較舊,由檔案副檔名「.pem」表示,而 PKCS#8 較新,通常使用副檔名「.key」。
2。辨識金鑰檔案的 PEM 格式:
檢查私鑰檔案中的內容。如果它以“-----BEGIN PRIVATE KEY-----”開頭並以“-----END PRIVATE KEY-----”結尾,則它是 PKCS#8 格式。如果它以“-----BEGIN RSA PRIVATE KEY-----”開頭並以“-----END RSA PRIVATE KEY-----”結尾,則它是 PKCS#1 格式。
3.選擇適當的Java 程式碼:
根據您的私鑰檔案的格式,使用提供的對應程式碼片段:
對於PKCS#8 格式:
byte[] pkcs8EncodedKey = Base64.getDecoder().decode(privateKeyPem); KeyFactory factory = KeyFactory.getInstance("RSA"); PrivateKey privateKey = factory.generatePrivate(new PKCS8EncodedKeySpec(pkcs8EncodedKey));
對於PKCS#1格式:
DerInputStream derReader = new DerInputStream(Base64.getDecoder().decode(privateKeyPem)); DerValue[] seq = derReader.getSequence(0); BigInteger modulus = seq[1].getBigInteger(); BigInteger publicExp = seq[2].getBigInteger(); BigInteger privateExp = seq[3].getBigInteger(); // ... Continue extracting the remaining components and construct the RSAPrivateCrtKeySpec KeyFactory factory = KeyFactory.getInstance("RSA"); PrivateKey privateKey = factory.generatePrivate(keySpec);
透過執行以下步驟並使用適當的Java 程式碼片段,您可以成功從PEM BASE64 編碼的私鑰檔案中取得RSA 私鑰,並將其用於您的特定要求。
以上是如何在 Java 中從 PEM BASE64 編碼的私鑰檔案提取 RSA 私鑰?的詳細內容。更多資訊請關注PHP中文網其他相關文章!