我正试图与现有的文摘签署。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为例。
keys. openssl
现在我想用 hash
应为 keys
和
BigInteger[] signature = signer.generateSignature(hash);
作为输入而不创建哈希值。基本上,我想替换
openssl * ????? *
在使用openssl的例子中,我认为结果的大小应该表明我使用的哈希算法(不同的摘要大小)是否对结果有影响。
我认为结果的大小应该表明我使用的哈希(不同摘要大小)算法是否对结果有任何影响。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
您显示的返回或采取