gpt4 book ai didi

c# - 如何使用使用 sha1ecdsa 的公钥根据签名验证数据?

转载 作者:可可西里 更新时间:2023-11-01 07:58:24 24 4
gpt4 key购买 nike

我对密码学知之甚少,但似乎很简单的任务却遇到了很大的问题。

我有 .pem 证书、数据字节和该数据的签名。我想通过将数据与签名进行匹配来检查是否有人更改了数据。

我的尝试:

private bool VerifySignature(byte[] data, byte[] signature)
{
try
{
X509Certificate certificate = new X509Certificate("cert_filename.pem");
if (certificate == null)
return false;

DSACryptoServiceProvider dsa = (DSACryptoServiceProvider)certificate.PublicKey.Key;

return dsa.VerifyData(data, signatureData);
}
catch
{
return false;
}
}

但它给了我一个错误

'Algorithm of certificates key is not supported' (System.NotSupportedException).

查看加载的证书,它说签名算法是“sha1ecdsa”。

我只想根据签名验证数据。我在这里错过了什么?我想在没有任何外部解决方案的情况下完成它,因为这似乎是一项微不足道的任务。

更新:我正在尝试实现与以下 Java 代码相同的功能:

private boolean verify(byte[] data, byte[] signature)
{
boolean isLicenseCorrect = false;

Signature sig = Signature.getInstance("SHA1WithECDSA");
sig.initVerify(certificate.getPublicKey());
sig.update(data);

return sig.verify(signature);
}

最佳答案

虽然DSA和ECDSA有关联,但并不相同。为什么不试试 ECDsaCryptoServiceProvider ?请注意,ECDSA 对椭圆曲线的支持仅包括 NIST 命名曲线。

关于c# - 如何使用使用 sha1ecdsa 的公钥根据签名验证数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30099352/

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