当我拨打CreateSignature
时,我从下面的代码中收到CryptographicException“Bad Hash。\ r \ n”。关于可能导致这种情况的任何想法?
RSAPKCS1SignatureFormatter RSAFormatter =
new RSAPKCS1SignatureFormatter(new RSACryptoServiceProvider());
RSAFormatter.SetHashAlgorithm("SHA256");
byte[] signedHash = RSAFormatter.CreateSignature(myHash);
答案 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);