【发布时间】:2018-11-14 07:23:25
【问题描述】:
我目前正在使用 RSACryptoServiceProvider,我想更改为 RSACng。我正在使用它来签署数据。更改的原因是我使用的是 Pkcs1 填充,并且我知道 Pss 填充是首选。我们正在进行安全审核。
我的问题是如何实例化 RSACng 以便它每次都使用相同的私钥/公钥?
我正在使用 RSACryptoServiceProvider:
CspParameters cp = new CspParameters();
cp.KeyContainerName = "ContainerName";
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(cp);
传入容器名称意味着它使用保留在机器上容器存储中的密钥。
使用 RSACng,我尝试了这个,但出现异常:“不支持请求的操作”
RSACng RSA = new RSACng(CngKey.Create(CngAlgorithm.Sha256, ContainerName));
我只需要能够传递存储密钥名称,以便它每次都使用相同的密钥,而不是生成一个新密钥。
【问题讨论】:
-
CngAlgorithm的值应该是CngAlgorithm.Rsa吗?
-
你不需要用
CNGKey.Open代替Create吗?
标签: c# .net cryptography public-key-encryption