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