4

我正在生成密钥对并将它们存储在 xml 文件中

ToXmlString(true);

我需要根据 MSDN 将密钥大小设置为 2048 唯一的地方是来自 RSACryptoServiceProvider 的构造函数

    private void AssignParameter(ProviderType providerType)
    {
        CspParameters cspParams;

        cspParams = new CspParameters((int)providerType);
        cspParams.KeyContainerName = RSAEncryption.containerName;
        cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
        cspParams.ProviderName = "Microsoft Strong Cryptographic Provider";
        cspParams.KeyNumber = (int)KeyNumber.Exchange;

        this.rsa = new RSACryptoServiceProvider(2048, cspParams);
    }

当我使用检查密钥大小时

int x = this.rsa.KeySize;

我总是得到1024,所以这里有什么问题??

4

2 回答 2

3

我以前见过这个,尝试更改容器名称或尝试

using (this.rsa = new RSACryptoServiceProvider(2048, cspParams)) 
{

}

或者this.rsa.Clear();在你完成之后。

如果您已经有一个同名的容器,我相信它会重复使用该容器。

于 2012-03-29T17:16:39.930 回答
1

您需要首先像这样清除现有容器:

rsa.PersistKeyInCsp = false;
rsa.Clear();

然后它应该与你一起工作。不要忘记设置:

rsa.PersistKeyInCsp = true;
于 2016-03-27T15:48:03.227 回答