RSACryptoServiceProvider.VerifyData在.Net 5.0中总是返回false



我目前正在将一些库从.netstandard2.0迁移到.net5.0,无意中发现了一个我无法真正理解的奇怪行为,即它在.netstandard 2.0中正常工作,但在.net5.0中不再正常工作。我以前从未使用过任何密码,所以我可能会错过一些明显的要点。

我能够将我的问题分解为以下几点:

var cpParams = new CspParameters { KeyContainerName = KEY_CONTAINER };
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cspParams);
rsa.ImportCspBlob(...);
byte[] signature = rsa.SignData(byteArray, new SHA1CryptoServiceProvider());
var isValid = rsa.VerifyData(byteArray, new SHA1CryptoServiceProvider(), signature)

isValid显然应该为true,我们也可以在.netstandard2.0中验证这一点。

但是,迁移到.net5.0后,isValid为false。

我做了一些研究,但找不到任何解释。

有人对此有更深入的了解吗?

我也遇到了类似的问题。CspParametersKeyNumber初始化为-1,随后,无论出于何种原因,ImportCspBlob都将KeyNumber属性从2更改为1

尝试设置以下内容,ImportCspBlob就会正常工作。

CspParameters.KeyNumber = (int)KeyNumber.Signature 

最新更新