在 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中文網其他相關文章!