如何使用指纹来确保安全?
How to use thumbprint for 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
指纹只是证书的标识符,通常是证书的 MD5 或 SHA1 哈希值。
您不能对指纹本身做任何事情,将其视为数据库中记录的 ID。您需要确定,但我怀疑他们的意图是为您提供证书存储中证书的指纹。 This Whosebug question 提供有关如何通过指纹从证书存储加载证书的信息。
为了安全起见,我正在使用 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
指纹只是证书的标识符,通常是证书的 MD5 或 SHA1 哈希值。
您不能对指纹本身做任何事情,将其视为数据库中记录的 ID。您需要确定,但我怀疑他们的意图是为您提供证书存储中证书的指纹。 This Whosebug question 提供有关如何通过指纹从证书存储加载证书的信息。