小编dru*_*rup的帖子

如何验证签名,从CRT文件加载PUBLIC KEY?

我回顾了很多论坛和例子,但没有人帮助我.我需要从任何Web服务验证签名.我有带有公钥的test.crt文件进行验证.

static bool Verify(string text, string signature)
{
  X509Certificate2 cert = new X509Certificate2(
      HttpContext.Current.Server.MapPath("test-server.cert"));
  RSACryptoServiceProvider csp = (RSACryptoServiceProvider) cert.PublicKey.Key;

  // Hash the data
  SHA1Managed sha1 = new SHA1Managed();
  UnicodeEncoding encoding = new UnicodeEncoding();
  byte[] data = encoding.GetBytes(text);
  byte[] sign = Convert.FromBase64String(signature);
  byte[] hash = sha1.ComputeHash(data);

  return csp.VerifyHash(hash, CryptoConfig.MapNameToOID("SHA1"), sign);
}
Run Code Online (Sandbox Code Playgroud)

但结果总是假的:(

我有一个OpenSSL示例:

openssl base64 -d -in signature -out signature.bin
openssl dgst -sha1 -verify test-server.pub -signature signature.bin from_gateway
Run Code Online (Sandbox Code Playgroud)

c# cryptography digital-signature public-key-encryption x509

25
推荐指数
1
解决办法
5439
查看次数