Mono不会将SHA1识别为RSA签名的哈希算法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mono不会将SHA1识别为RSA签名的哈希算法相关的知识,希望对你有一定的参考价值。
我正在尝试将一些代码从C#移植到Mono以用于未来的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
函数中查找它。
Mono documentation支持这一点,将该参数记录为:
用于创建数据哈希值的哈希算法标识符(OID)。
Microsoft implementation通过X509Utils.NameOrOidToAlg
查找参数,可能接受名称或OID。
因此,要使其正常工作,您应该能够在Mono版本中传递null
,或者传递OID“1.3.14.3.2.26”。
以上是关于Mono不会将SHA1识别为RSA签名的哈希算法的主要内容,如果未能解决你的问题,请参考以下文章