Я создал контейнер RSA Key, используя следующий код. Клавиши создаются в контейнере, и я могу успешно зашифровать/дешифровать в контейнере.Проверить существующий контейнер RSA Key
public static void CreateKeyContainer()
{
RSACryptoServiceProvider rsa = null;
try
{
var cryptoParameters = new CspParameters();
cryptoParameters.KeyContainerName = "MyContainer";
cryptoParameters.Flags = CspProviderFlags.UseMachineKeyStore;
rsa = new RSACryptoServiceProvider(2048, cryptoParameters);
}
finally
{
if (rsa != null)
{
rsa.Clear();
rsa.Dispose();
}
}
}
Перед вызовом метода CreateKeyContainer, я хотел бы убедиться, существуют ли уже ключи или нет в указанном контейнере. Я изменил флаг на CpsProviderFlags.UseExistingKey.
public static bool CheckIfKeysExist()
{
RSACryptoServiceProvider rsa = null;
try
{
var cryptoParameters = new CspParameters();
cryptoParameters.KeyContainerName = "MyContainer";
cryptoParameters.Flags = CspProviderFlags.UseExistingKey;
rsa = new RSACryptoServiceProvider(2048, cryptoParameters);
}
catch (Exception ex)
{
return false;
}
finally
{
if (rsa != null)
{
rsa.Clear();
rsa.Dispose();
}
}
return true;
}
Однако при выполнении этого метода, он всегда бросает Cryptographic исключение, что «Keyset не существует», независимо от наличия ключа контейнера.
Как проверить, существует ли контейнер ключей?
использования одного | для двоичного OR –