gpt4 book ai didi

Java 相当于 "openssl -dgst -sha512 -sign keyfile -out outfile file"

转载 作者:行者123 更新时间:2023-12-01 08:58:55 25 4
gpt4 key购买 nike

我的同事在 Java 中实现上述内容时遇到问题。他们已经浪费了好几天了。

该命令的作用是什么?创建摘要,然后使用 key 文件对摘要进行签名?

创建摘要的说明位于:How can I create an SHA512 digest string in Java using bouncy castle?如何登录 Java?

-sign 使用哪种算法?这取决于我使用的 key 吗?我的 key 文件是 p12 格式。这是正确的吗?

最佳答案

根据 key 的类型和摘要算法,openssl 将确定签名算法。请参阅OpenSSL documentation ,

When signing a file, dgst will automatically determine the algorithm (RSA, ECC, etc) to use for signing based on the private key's ASN.1 info.

要在 Java 中执行相同的过程,您必须加载 PKCS12 keystore 的 key 并使用私钥进行签名。 BouncycaSTLe 它不需要

//Read private key identified by keyAlias from keystore
KeyStore keystore = KeyStore.getInstance("PKCS12");
keystore.load(Files.readAllBytes(Paths.get("keyfile.p12")), password);
PrivateKey key = (PrivateKey)keystore.getKey(keyAlias, password);

//Use SHA512withRSA with RSA keys, SHA512withDSA for DSA keys,...
//See supported algorithm here: https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#Signature
String signatureAlgorithm = "SHA512withRSA";

//Digital Signature
Signature sig = Signature.getInstance(signatureAlgorithm);
sig.initSign(privateKey);
sig.update(Files.readAllBytes(Paths.get(file)));
byte[] signature = sig.sign();

OpenSSL 默认生成十六进制输出。使用 -binary 获取二进制数据或将 Java 输出转换为 HEX

关于Java 相当于 "openssl -dgst -sha512 -sign keyfile -out outfile file",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41850950/

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