openssl dgst -sha256 -sign key.pem

问题描述 投票:1回答:1

我正试图与现有的文摘签署。openssl.

比方说,我已经有一个文摘'mydigest'。说到这里,我不想使用。

echo -n "mydigest" | openssl dgst -sha256 -sign key.pem | openssl enc -A -base64

我有ECDSA而不是RSA,所以我认为我不应该使用。rsautl 是使用输入的原样。

因此,我的假设是,我需要一些东西,它需要输入原样(mydigest),并用我的ECDSA私钥进行签名。

我试着用不同的哈希算法创建的哈希大小是否对签名结果有任何影响。

echo -n "mydigest" | openssl pkeyutl -sign -inkey key.pem | openssl enc -A -base64

echo -n "my-very-very-very-long-digest" | openssl pkeyutl -sign -inkey key.pem | openssl enc -A -base64

但从输出长度来看,两个命令的输出大小是一样的。我认为对于大型的 my-very...-long-digest 命令,它应该返回更大的输出(因为它应该在不缩短(散列)的情况下按原样接收输入。

EDIT.

 // sign something
String messageToSign = "something_to_sign";
ECDomainParameters domain = new ECDomainParameters(spec.getCurve(), spec.getG(), spec.getN());
ECDSASigner signer = new ECDSASigner();
signer.init(true, new ECPrivateKeyParameters(privateKey, domain));
MessageDigest digest = MessageDigest.getInstance("Keccak-256");
byte[] hash = digest.digest(messageToSign.getBytes(StandardCharsets.UTF_8));
BigInteger[] signature = signer.generateSignature(hash);

也许下面的例子会有助于理解我的要求。这是以bouncycastle为例。

  1. 假设我有以下内容。
  2. hash.

keys. openssl现在我想用 hash 应为 keys

BigInteger[] signature = signer.generateSignature(hash);

作为输入而不创建哈希值。基本上,我想替换

openssl * ????? *

在使用openssl的例子中,我认为结果的大小应该表明我使用的哈希算法(不同的摘要大小)是否对结果有影响。

我认为结果的大小应该表明我使用的哈希(不同摘要大小)算法是否对结果有任何影响。
openssl rsa bouncycastle sign ecdsa
1个回答
3
投票

openssl pkeyutl -sign -inkey ecprivkey.pem我试图用openssl来签署一个现有的摘要。假设我已经有一个摘要'mydigest'。我不想使用: echo -n "mydigest" /crypto.stackexchange.comquestions33095shouldnt-a-signature-using-ecdsa-be-exactly-96-bytes-not-102-or-103。

https:/crypto.stackexchange.comquestions44988length-of-ecdsa-signature(签名长度)

Bouncy 提供者还支持"{hash}with{PLAIN-,CVC-}ECDSA "算法,它做同样的数学签名,但使用 P1363 定义的更简单的表示法,即简单地将两个固定大小的(无符号的 bigendian)整数(等于子组顺序大小)连接起来。JWS也使用这种表示方法。最后,Bouncy LWAPI

您显示的返回或采取

-- 数学值--而把编码和解码留给你。

© www.soinside.com 2019 - 2024. All rights reserved.