如何使用指纹进行安全保护?

时间:2015-05-19 15:25:07

标签: c# x509 rsacryptoserviceprovider .net-security

我正在使用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

1 个答案:

答案 0 :(得分:1)

指纹只是证书的标识符,通常是证书的MD5或SHA1哈希值。

您无法对指纹本身做任何事情,将其视为数据库中记录的ID。您需要确定,但我怀疑他们的目的是给出证书存储区中证书的指纹。 This StackOverflow question提供有关如何通过指纹从证书存储加载证书的信息。