gpt4 book ai didi

security - 调用 RSACryptoServiceProvider.SignData 时出现 ArgumentException "Value was invalid"

转载 作者:行者123 更新时间:2023-12-02 01:20:33 24 4
gpt4 key购买 nike

使用以下代码调用 RSACryptoServiceProvider.SignData 时,出现 System.ArgumentException“值无效”:

var csp = (RSACryptoServiceProvider)_certificate.PrivateKey;
string simpleName = CryptoConfig.MapNameToOID("SHA256");
return csp.SignData(data, simpleName);

该代码来自第三方示例,因此它应该在正确的情况下工作。看来这可能是由我的操作系统引起的,但我还没有找到解决方案,所以我想在这里发帖看看是否有人可以提供帮助?

.NET 框架:3.5操作系统:Microsoft Windows Server 2003 R2 企业版 Service Pack 2

最佳答案

经过更多的挖掘后,我设法找到了比编辑 machine.config 文件更合适的解决方案。您可以为自己感兴趣的算法指定 OID,然后将该值传递给 RSA 提供程序,如下所示:

public static string Sign(string data)
{
RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider();
HashAlgorithm algorithm = new SHA256CryptoServiceProvider();
const string sha256Oid = "2.16.840.1.101.3.4.2.1";

byte[] dataBytes = Encoding.ASCII.GetBytes(data);
byte[] hashBytes= algorithm.ComputeHash(dataBytes);
byte[] signedBytes = rsaProvider.SignHash(hashBytes, sha256Oid);
string signature = Convert.ToBase64String(signedBytes);

return signature;
}

关于security - 调用 RSACryptoServiceProvider.SignData 时出现 ArgumentException "Value was invalid",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5159350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com