首頁 >Java >java教程 >如何在Java中從檔案載入RSA私鑰進行XML簽章驗證?

如何在Java中從檔案載入RSA私鑰進行XML簽章驗證?

Patricia Arquette
Patricia Arquette原創
2024-10-25 09:42:28857瀏覽

How to Load an RSA Private Key from a File in Java for XML Signature Verification?

在 Java 中從檔案載入 RSA 私鑰

處理安全敏感資料時,能夠驗證數字的真實性簽名至關重要。在本例中,任務是從檔案載入 RSA 私鑰以驗證 XML 簽章。

要達到此目的,請依照下列步驟操作:

1.以位元組形式讀取私鑰檔案:

<code class="java">String keyPath = "mykey.pem";
File privKeyFile = new File(keyPath);
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(privKeyFile));
byte[] privKeyBytes = new byte[(int) privKeyFile.length()];
bis.read(privKeyBytes);
bis.close();</code>

2。將私鑰轉換為PKCS8 格式(可選)

如果您的私鑰還不是PKCS8 格式,請使用以下命令將其轉換:

<code class="bash">openssl pkcs8 -topk8 -inform PEM -outform DER -in private_key_file -nocrypt > pkcs8_key</code>

然後,讀取取轉換後的金鑰使用以下程式碼:

<code class="java">byte[] convertedPrivKeyBytes = Files.readAllBytes(Paths.get("pkcs8_key"));</code>

3.產生RSA 私鑰:

<code class="java">KeyFactory keyFactory = KeyFactory.getInstance("RSA");
KeySpec ks = new PKCS8EncodedKeySpec(convertedPrivKeyBytes);
RSAPrivateKey privKey = (RSAPrivateKey) keyFactory.generatePrivate(ks);</code>

4.驗證數位簽章:

擁有RSA 私鑰後,您可以使用它來驗證SAMLResponse 物件的簽章:

<code class="java">samlResponse.sign(Signature.getInstance("SHA1withRSA").toString(), privKey, certs);</code>

透過執行下列步驟,您可以成功從檔案載入RSA私鑰並用它來驗證數位簽章。

以上是如何在Java中從檔案載入RSA私鑰進行XML簽章驗證?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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