В настоящее время я делаю доказательство концепции для шифрования данных с использованием сертификата. Он работает хорошо, но теперь я хочу попробовать сценарий, когда срок действия сертификата истек. Я создал сертификат с истекшим сроком действия, и я был удивлен, заметив, что когда-либо работает свойство даже с истекшим сертификатом. Я ожидал ошибки.Отсутствие шифрования/дешифрования данных с сертификатом с истекшим сроком действия с использованием RSACryptoServiceProvider
Знаете ли вы, не так ли, потому что это самоподписанный сертификат?
Вот код, который я использую для тестирования моего случая
[TestMethod]
public void Encrypt_decrypt_with_expired_certificate()
{
//Arrange
var baseString = "This is an encryption test";
X509Certificate2 newX509Certificate2 = new X509Certificate2("d:\\testx509certExpired.pfx", "apassword");
Console.WriteLine(newX509Certificate2.NotAfter); //Show the expiration date which is in the past
var encryptor = new CertificateEncryptor(newX509Certificate2); //This class is a simple wrapper around RSACryptoServiceProvider
//Act
string encryptedResult = encryptor.Encrypt(baseString); //Exception expected because of the expired certificate but not thrown
//Assert
Console.WriteLine("Base string : {0}", baseString);
Console.WriteLine("Encrypted string : {0}", encryptedResult);
Assert.IsNotNull(encryptedResult);
//revert back
string decryptedString = encryptor.Decrypt(encryptedResult);
Console.WriteLine("Decrypted string : {0}", decryptedString);
Assert.AreEqual(baseString, decryptedString);
}
Благодаря
Вероятно, лучше всего подходит для обзора кода, на мой взгляд. – MethodMan
Если вы хотите использовать сертификат с истекшим сроком действия, класс X509Certificate2 не остановит вас. Он предоставляет вам методы для проверки истечения срока действия, чтобы вы могли написать код, чтобы обнаружить состояние и отреагировать соответствующим образом. –