首頁  >  文章  >  Java  >  如何在 Java 中從 PEM 檔案解析 PKCS#1 和 PKCS#8 私鑰?

如何在 Java 中從 PEM 檔案解析 PKCS#1 和 PKCS#8 私鑰?

Barbara Streisand
Barbara Streisand原創
2024-11-09 00:28:01921瀏覽

How to Parse PKCS#1 and PKCS#8 Private Keys from a PEM File in Java?

從PEM BASE64 編碼的私鑰檔案取得RSA 私鑰

嘗試從PEM BASE64 編碼的私鑰檔案中擷取私鑰檔案,您可能會遇到類似您所描述的錯誤。這通常是由於使用非標準密鑰格式而導緻密鑰規範處理不當造成的。

解決錯誤

您遇到的錯誤是可能與使用不正確的私鑰解析方法有關。不要依賴潛在的不符合FIPS 的第三方函式庫:

使用sun.security 和DerInputStream 更新了Java 程式碼:

這裡是一個更新的Java 程式碼片段,使用sun.securityDerInputStream 類別來解析PKCS#1 和PKCS#8 格式的私鑰,同時確保FIPS 合規性:

import sun.security.util.DerInputStream;
import sun.security.util.DerValue;

import java.io.File;
import java.io.IOException;
import java.math.BigInteger;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.security.GeneralSecurityException;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.RSAPrivateCrtKeySpec;
import java.util.Base64;

public static PrivateKey pemFileLoadPrivateKeyPkcs1OrPkcs8Encoded(File pemFileName) throws GeneralSecurityException, IOException {
    // ... (code as shown in the question)
}

錯誤和解決方案的詳細說明:

原始程式碼片段嘗試使用IBM FIPS 提供者解析私鑰,這可能不是最合適的方法。更新後的程式碼使用更標準化的方法以及 sun.security 和 DerInputStream 類別來處理 PKCS#1 和 PKCS#8 格式。這可確保 FIPS 合規性並解決您遇到的錯誤。

以上是如何在 Java 中從 PEM 檔案解析 PKCS#1 和 PKCS#8 私鑰?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn