Mor*_*rzy 2 security rsa sha256
使用以下代码调用 RSACryptoServiceProvider.SignData 时,出现 System.ArgumentException“值无效”:
var csp = (RSACryptoServiceProvider)_certificate.PrivateKey;
string simpleName = CryptoConfig.MapNameToOID("SHA256");
return csp.SignData(data, simpleName);
Run Code Online (Sandbox Code Playgroud)
该代码来自第三方示例,因此它应该在正确的情况下工作。看来这可能是由我的操作系统引起的,但我还没有找到解决方案,所以我想在这里发帖看看是否有人可以提供帮助?
.NET Framework:3.5 操作系统:Microsoft Windows Server 2003 R2 企业版 Service Pack 2
小智 5
经过更多的挖掘后,我设法找到了比编辑 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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2771 次 |
| 最近记录: |