当前位置: 首页 > 知识库问答 >
问题:

如何使用BouncyCastle验证ASN.1格式的ECDSA签名和DER中的公钥?

连俊智
2023-03-14

我有一个包含公钥的字节数组和一个包含ASN.1格式签名的字节数组。使用ECDSA P-256。

以下代码加载公钥:

var publicKey = PublicKeyFactory.CreateKey(publicKeyDERBytes);

以下代码验证签名:

var signer = SignerUtilities.GetSigner("ECDSA");

signer.Init(false, publicKey);
signer.BlockUpdate(signatureASN1Bytes, 0, signatureASN1Bytes.Length);
Console.WriteLine(signer.VerifySignature(signature));

但它总是写假的。可能出了什么问题?

在 .NET Core 上使用 BouncyCastle.NetCore 1.8.3。

共有1个答案

唐健
2023-03-14

结果我找不到正确的签名人。

Instaead of:

var signer = SignerUtilities.GetSigner("ECDSA");

应该是:

var signer = SignerUtilities.GetSigner("SHA256withECDSA");
 类似资料:
  • 我应该如何更改A方法?任何想法都是好的。提前谢谢。

  • 下面是Java代码: 然后使用C代码来验证签名 我在想我需要将我的签名编码为hexa,但它并没有解决我的问题。我已经使用crypto编写了一个c版本的符号方法,并且已经验证过了。所以为什么当我使用java代码时,签名没有得到验证。谢谢

  • 现有系统使用Bouncy Castle(.NET)生成签名,我需要使用Microsoft ECDsaCng类验证这些现有签名。 在我尝试用Microsoft类验证签名之前,一切都正常工作,此时它会生成一个异常,说明参数不正确。 有什么想法吗?

  • 问题内容: 我已经测试了一种解决方案,可以验证ECDSA签名如何从EC公共密钥字节中获取PublicKey对象?,该签名可以完美地处理给定的数据。 这是数据: 这是代码(显示 true ): 当我将签名和数据更改为来自已实施系统的示例输入时,就会出现我的问题: 新数据输出此错误: 我认为问题出在 安全消息 附带的签名上,因为: 密钥对的长度和格式与示例相同。并且是正确的,因为它来自对消息进行签名的

  • 我已经在Java中生成了一个ECDSA签名,我希望从中获得R和S值,以便获得COSE编码的签名。根据我的理解,我生成的签名是DER编码的(默认情况下使用bouncyCastle)。当我使用P-256曲线(SHA256withECDSA)时,我正确地检索了R和S值。 当我使用其他曲线(P-521、P-384)时,从一种编码到另一种编码的签名解析有一些问题。

  • 下面是我的场景--我从条形码中读取数据,并将其转换为纯文本。本文是条码数据+数字签名的结合。数字签名附加在末尾,使我能够分离出实际数据和数字签名数据。数字签名数据使用sha256哈希-用户将公钥作为windows证书文件()发送给我。 所需实现:-需要从证书中提取公钥,并根据提供的条形码数据和数字签名验证公钥。 问题: