무결성 확인 ceritifcate {rsacryptoserviceprovider -SHA1 -ThumbPrint}}
-
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
"VAR을 위해"verif
"
해결책
여기에는 실제 질문이 없습니다. 당신은 verif의 초기 가치를 무조건 무시하고 있다는 것이 옳습니다. 더 중요한 것은 x509certificate2를 사용하여 검증을 수행하는 것을 고려해 보셨습니까? :
X509Certificate2 x2 = new X509Certificate2(certificatEnCours);
bool verif = x2.Verify();
나는 이것이 바퀴를 다시 발명하는 것보다 현명하다고 생각합니다.
편집 : 인증서 체인을 확인하는 경우 사용하고 싶다고 생각합니다. x509chain특히 체인 스타투스 재산.
제휴하지 않습니다 StackOverflow