如何检查.NET中是否存在RSA密钥容器

Mat*_*iel 6 .net encryption cryptography

我们有

    Dim cp As New CspParameters()
    cp.KeyContainerName = ContainerName
    cp.Flags = CspProviderFlags.UseMachineKeyStore
Run Code Online (Sandbox Code Playgroud)

如果ContainerName的密钥不存在,如何确保不创建新密钥?

dhc*_*cgn 8

试试这个:

    public static bool DoesKeyExists(string containerName)
    {
        var cspParams = new CspParameters
        {
            Flags = CspProviderFlags.UseExistingKey,
            KeyContainerName = containerName
        };

        try
        {
            var provider = new RSACryptoServiceProvider(cspParams);
        }
        catch (Exception e)
        {
            return false;
        }
        return true;
    }
Run Code Online (Sandbox Code Playgroud)


Wol*_*yrd 1

您可以使用

.PersistKeyInCsp = false
Run Code Online (Sandbox Code Playgroud)

在您的加密提供商上,这将确保密钥不会留在容器中。你是这个意思吗?