gpt4 book ai didi

Java - 使用私钥的数字签名将数据发送到外部 Web 服务

转载 作者:行者123 更新时间:2023-11-28 23:52:45 24 4
gpt4 key购买 nike

我需要从我在 Tomcat 6 上运行的 Java 应用程序连接到外部 Web 服务。我为我的域购买并安装了 SSL 证书在我的服务器上。现在我需要连接到外部服务并使用我的证书私钥对任何使用 SHA-256 哈希和 128 位盐长度的服务数据进行数字签名。如何使用私钥创建此签名?我可以为盐选择任何值吗?他们能否使用我的 SSL 证书公钥对其进行解密?

我可以使用 Bouncy Castle 吗?这个图书馆?任何关于该主题的代码或教程将不胜感激。

最佳答案

JCA 文档提供了使用 Signature 的示例(在 Generating and Verifying a Signature Using Generated Keys 下。您将使用 SHA256withRSA 而不是 SHA1withDSA,因为它是由 SunRsaSignProvider 支持(假设它是一个 RSA key )。为此您不需要 BouncyCaSTLe。

如果你想使用 BouncyCaSTLe,你需要按照这些行做一些事情(我还没有尝试过这个特定的代码):

AsymmetricKeyParameter keyParam = PrivateKeyFactory.createKey(...);
// You might need to cast to private key to RSAPrivateKey
// and get its attributes manually here.

SHA256Digest digest = new SHA256Digest();
RSADigestSigner signer = new RSADigestSigner(digest);
signer.init(true, keyParam);
signer.update(... data to sign, start, length, ...);
byte[] signature = signer.generatedSignature();

(如果您在网络应用程序中执行此操作,您还需要网络应用程序能够访问此私钥,如果网络应用程序遭到破坏,这可能会带来安全风险。可能值得考虑使用不同的 key /证书,甚至是自签名的,如果远程方愿意接受的话。)

关于Java - 使用私钥的数字签名将数据发送到外部 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5956409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com