RSACryptoServiceProvider.VerifyData 在 .Net5.0 中总是 returns false
RSACryptoServiceProvider.VerifyData always returns false in .Net5.0
我目前正在将一些库从 .netstandard2.0 迁移到 .net5.0,并且偶然发现了一个我无法真正理解的奇怪行为,即它在 .netstandard2.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 显然应该是真的,我们也可以在 .netstandard2.0.
中验证
但是迁移到.net5.0后,isValid为false。
我做了一些研究,但找不到任何解释。
有没有人对此有更深入的了解?
我遇到了类似的问题。 CspParameters
将 KeyNumber
初始化为 -1
,后来,ImportCspBlob
将 KeyNumber
属性 从 2
更改为 1
,无论出于何种原因。
尝试设置以下内容,ImportCspBlob
将正常运行。
CspParameters.KeyNumber = (int)KeyNumber.Signature
我目前正在将一些库从 .netstandard2.0 迁移到 .net5.0,并且偶然发现了一个我无法真正理解的奇怪行为,即它在 .netstandard2.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 显然应该是真的,我们也可以在 .netstandard2.0.
中验证但是迁移到.net5.0后,isValid为false。
我做了一些研究,但找不到任何解释。
有没有人对此有更深入的了解?
我遇到了类似的问题。 CspParameters
将 KeyNumber
初始化为 -1
,后来,ImportCspBlob
将 KeyNumber
属性 从 2
更改为 1
,无论出于何种原因。
尝试设置以下内容,ImportCspBlob
将正常运行。
CspParameters.KeyNumber = (int)KeyNumber.Signature