Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java等效于“openssl-dgst-sha512-sign-keyfile-outfile文件”_Java_Bouncycastle - Fatal编程技术网

Java等效于“openssl-dgst-sha512-sign-keyfile-outfile文件”

Java等效于“openssl-dgst-sha512-sign-keyfile-outfile文件”,java,bouncycastle,Java,Bouncycastle,我的同事在用Java实现上述功能时遇到问题。他们已经浪费了几天了 这个命令做什么?创建摘要,然后使用密钥文件对摘要进行签名 创建摘要的说明如下: 如何登录Java 符号使用哪种算法?这取决于我使用的钥匙吗? 我的密钥文件是p12格式的。这是否正确?根据密钥类型和摘要算法,openssl将确定签名算法。看, 签名文件时,dgst将根据私钥的ASN.1信息自动确定用于签名的算法RSA、ECC等 要在Java中执行相同的过程,必须加载PKCS12密钥库的密钥,并使用私钥进行签名。Bouncycastl

我的同事在用Java实现上述功能时遇到问题。他们已经浪费了几天了

这个命令做什么?创建摘要,然后使用密钥文件对摘要进行签名

创建摘要的说明如下: 如何登录Java

符号使用哪种算法?这取决于我使用的钥匙吗?
我的密钥文件是p12格式的。这是否正确?

根据密钥类型和摘要算法,openssl将确定签名算法。看,

签名文件时,dgst将根据私钥的ASN.1信息自动确定用于签名的算法RSA、ECC等

要在Java中执行相同的过程,必须加载PKCS12密钥库的密钥,并使用私钥进行签名。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输出转换为十六进制