【问题标题】:Verify integrity Ceritifcate { RSACryptoServiceProvider - SHA1 - thumbprint }验证完整性 Ceritifcate { RSACryptoServiceProvider - SHA1 - thumbprint }
【发布时间】:2009-06-19 09:12:35
【问题描述】:

我有一个小问题。我想验证证书的完整性。

所以我做了这段代码:

using System.Security.Cryptography;
using System.Runtime.InteropServices;
using System.Security.Cryptography.X509Certificates; 

SHA1Managed sha1 = new SHA1Managed();
RSACryptoServiceProvider csp = null;
AsymmetricAlgorithm rsaAlgo = certificatEnCours.PublicKey.Key;
byte[] data = null;
byte[] hash = null;

string keyPublic = "";
string signatureLikeInteger = "";

bool verif = false;

// ------------- PART 1 -------------

signatureLikeInteger = certificatEnCours.Thumbprint;

data = Convert.FromBase64String(signatureLikeInteger);

// ------------- PART 2 -------------

hash = sha1.ComputeHash(certificatEnCours.RawData);

keyPublic = rsaAlgo.ToXmlString(false);

csp = new RSACryptoServiceProvider();

csp.FromXmlString(keyPublic);

// ------------------------------

verif = csp.VerifyData(hash, CryptoConfig.MapNameToOID("SHA1"), data);

我的问题是我的变量“verif”上已经有了值“false”。

【问题讨论】:

  • 有人可以重新格式化问题。阅读起来非常困难。

标签: c# certificate sha1 verify rsacryptoserviceprovider


【解决方案1】:

这里没有实际问题。你是对的,你无条件地忽略了验证的初始值。更重要的是,你有没有考虑过使用 X509Certificate2 做验证?:

X509Certificate2 x2 = new X509Certificate2(certificatEnCours);
bool verif = x2.Verify();

我认为这比重新发明轮子更明智。

编辑:如果您正在验证证书链,我相信您想使用X509Chain 尤其是 ChainStatus 属性。

【讨论】:

    猜你喜欢
    • 2021-07-15
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    • 2020-02-29
    • 1970-01-01
    • 2017-10-27
    相关资源
    最近更新 更多