التحقق من شهادة سلامة {RSACryptoServiceProvider - SHA1 - بصمة الإبهام}
-
06-07-2019 - |
سؤال
وآسف لغتي الإنجليزية.
ولدي مشكلة صغيرة. أريد للتحقق من سلامة بلدي الشهاده.
وأنا جعل هذا الرمز:
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 signatureNumérique = "";
bool verif = false;
// ------------- PART 1 -------------
signatureNumérique = certificatEnCours.Thumbprint;
data = Convert.FromBase64String(signatureNumérique);
// ------------- 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);
ولكن لدي بالفعل قيمة "false
" من أجل "verif
" فار
المحلول
وليس هناك شك الفعلي هنا. أنت محق أنك دون قيد أو شرط تجاهل القيمة الأولية verif. الأهم من ذلك، هل تعتبر استخدام X509Certificate2 للقيام التحقق:؟
X509Certificate2 x2 = new X509Certificate2(certificatEnCours);
bool verif = x2.Verify();
وأعتقد أن هذا هو أكثر حكمة من إعادة اختراع العجلة.
وتحرير: إذا كنت التحقق من سلسلة شهادات أعتقد أنك تريد استخدام <لأ href = "http://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509chain. ASPX "يختلط =" noreferrer نوفولو "> X509Chain وعلى وجه الخصوص في ChainStatus الممتلكات.
لا تنتمي إلى StackOverflow