c# - Mono 无法将 SHA1 识别为 RSA 签名的哈希算法

标签 c# mono .net-3.5 cryptography sha1

我正在尝试将一些代码从 C# 移植到 Mono,以用于 future 的 Linux 项目。

Mono 输出此错误:

A System.Security.Cryptography.CryptographyException was thrown; sha1 is an unsupported hash algorithm for RSA signing"

运行或调试此代码以进行 RSA 签名时:

byte[] bytesSing = rsa.SignHash(hashValue, "SHA1");

我检查了VS2010,引用文献说它必须是一个字符串,我将其作为“SHA1”传递。它在 Windows 下编译并运行,但在 Mono 下不编译或运行。

这是 Mono 的 source code .

最佳答案

根据您链接的源代码文件,SignHash 函数假定您传递的字符串是 OID,并尝试在 GetHashNameFromOID 中查找它。 code> 直接在它上面的函数。

Mono documentation支持这一点,将该参数记录为:

The hash algorithm identifier (OID) used to create the hash value of the data.

Microsoft implementation通过 X509Utils.NameOrOidToAlg 查找参数,它可能接受名称或 OID。

因此,要使其正常工作,您应该能够在 Mono 版本中传递 null,或传递 OID“1.3.14.3.2.26”。

关于c# - Mono 无法将 SHA1 识别为 RSA 签名的哈希算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26895308/

相关文章:

c# - 使用 JsonSerializer 有选择地读取部分 JSON 数据并填充一个 c# 对象

f# - FSI.exe 在 Ubuntu 10.10 下不工作

.net - .NET 3.5 的代码契约搞乱了 VS10 的调试器

.net - NET Framework 中是否有任何内置函数可以将字符串编码为有效的 XML unicode?

c# - 使用ImageSharp,将包含Bgra32的传入缓冲区转换为ImageSharp Image <Rgba24>图像的最佳方法是什么?

c# - MSBuild 任务的测试驱动开发

c# - 数据库到 DropDownList 和 AutoPostBack 到标签

c# - CsharpRepl 和交互式 shell 在 Mono for Win 中位于何处?

linux - Mono:如何以阻塞方式执行 shell 脚本?

c# - 如何更改 C# .NET 3.5 中进度条的颜色?