Mono 不将 SHA1 识别为 RSA 签名的哈希算法
本文关键字:哈希 算法 RSA 不将 SHA1 识别 Mono | 更新日期: 2023-09-27 18:30:07
我正在尝试将一些代码从C#移植到Mono,用于未来的Linux项目。
单声道输出此错误:
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的源代码。
根据您链接的源代码文件,SignHash
函数假定您传递的字符串是 OID,并尝试在其正上方的 GetHashNameFromOID
函数中查找它。
Mono 文档支持这一点,将该参数记录为:
用于创建数据的哈希值的哈希算法标识符 (OID(。
Microsoft实现通过X509Utils.NameOrOidToAlg
查找参数,这可能接受名称或OID。
因此,要使其正常工作,您应该能够在Mono版本中传递null
,或者传递OID"1.3.14.3.2.26"。