C# - CryptographicException“Bad Hash”

时间:2010-07-28 03:26:42

标签: c# .net cryptography

当我拨打CreateSignature时,我从下面的代码中收到CryptographicException“Bad Hash。\ r \ n”。关于可能导致这种情况的任何想法?

RSAPKCS1SignatureFormatter RSAFormatter = 
    new RSAPKCS1SignatureFormatter(new RSACryptoServiceProvider());
RSAFormatter.SetHashAlgorithm("SHA256");
byte[] signedHash = RSAFormatter.CreateSignature(myHash);

2 个答案:

答案 0 :(得分:3)

您的代码段未显示您是如何获取myHash的,但我的猜测是它不是32字节数组。来自MSDN

  

SHA256算法的哈希大小   是256位。

尝试像这样定义你的myHash :(这里只是一个丑陋的样本)

    // 256 bit hash size
    byte[] myHash = { 59,4,248,102,77,97,142,201,
          210,12,224,93,25,41,100,197,
          210,12,224,93,25,41,100,197,
          213,134,130,135, 213,134,130,135};

当我用任何其他大小的哈希运行你的代码时,我得到了同样的错误。运行上面定义的数组,256位或32字节,它工作。

答案 1 :(得分:0)

byte[] bPlainText;
bPlainText = Encoding.UTF8.GetBytes(PlainText);
SHA256 sha256 = new SHA256Managed();
bPlainText=sha256.ComputeHash(bPlainText);