2015-05-19 32 views
0

我正在使用RSACryptoServiceProvider来提高安全性。如何使用指纹来保证安全?

我使用自签名证书构建了代码以用于测试目的。 不是用户向我们提供了实际的指纹。 我期待取得证书吗? 如何使用指纹?

这里是代码:

/// Builds Authorization in using self signed certificate 
/// </summary> 
/// <returns></returns> 
private string BuildAuthorization() 
{ 
    X509Certificate2 cert = GetCertificate(); 

    RSACryptoServiceProvider provideEncryptor = (RSACryptoServiceProvider)cert.PublicKey.Key; 

    string authorizaionValue = string.Format("{0}:{1}:{2}", _userName,_password, _currentTime); 

    byte[] encryptedData = provideEncryptor.Encrypt(Encoding.UTF8.GetBytes(authorizaionValue), false); 

    string encryptedString = Convert.ToBase64String(encryptedData); 

    return encryptedString; 

} 


/// <summary> 
/// creates a self signed certificate 
/// </summary> 
/// <returns></returns> 
private X509Certificate2 GetCertificate() 
{ 
    X509Store store = new X509Store(StoreLocation.CurrentUser); 
    store.Open(OpenFlags.ReadOnly); 
    X509Certificate2 cert = null; 
    string certName = ConfigurationManager.AppSettings["CertName"]; 

    foreach (var c in store.Certificates) 
    { 
     if (c.Subject.Equals(certName, StringComparison.OrdinalIgnoreCase)) 
     { 
      cert = c; 
      break; 
     } 
    } 


    store.Close(); 

    return cert; 

} 

提供的指纹是一样的东西:

87aa7f6 ******************** 9b2d95093a6

+0

AnyOne有什么想法是什么意思? – grace

+1

我找到了一个解决方案,请检查 http://stackoverflow.com/questions/11115511/how-to-find-certificate-by-its-thumbprint-in-c-sharp – Nazmul

回答

1

指纹只是证书的标识符,通常是证书的MD5或SHA1散列。

你不能真正对指纹本身做任何事情,把它想象成数据库中记录的ID。您需要确定,但是我怀疑他们的意图是他们正在给您的证书存储区中的证书指纹。 This StackOverflow question提供了有关如何通过指纹从证书存储区加载证书的信息。

+0

谢谢!现在它更有意义。 – grace

+0

这里是东西,只要你在本地的证书,基于指纹搜索的代码是好的。我张贴在外部网址上?我如何搜索他们的证书?它将我扔到'X509Store certStore = new X509Store(StoreName.My,StoreLocation.CurrentUser);' – grace