如何使用公钥验证SHA256签名结果

时间:2016-03-08 11:00:24

标签: c# validation rsa sha256

我需要使用外部授权API验证用户。这个API要求我在客户端发送一个独特的SHA-256哈希值。我应该稍后使用它来验证签名。

我像这样生成哈希。作为文本,我发送了一个唯一的会话ID:

private static string CalculateSHA256Hash(string text)
{
    UnicodeEncoding UE = new UnicodeEncoding();
    byte[] hashValue;
    byte[] message = UE.GetBytes(text);

    SHA256Managed hashString = new SHA256Managed();
    string hex = "";

    hashValue = hashString.ComputeHash(message);

    foreach (byte x in hashValue)
    {
        hex += String.Format("{0:x2}", x);
    }

    return hex;
}

从API我收到一个公共签名密钥作为字符串:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA185vTa2xheB 
<..>
SLhDuNk0SkiL7f8KbOG3tP9IDmAcAfoZWw/o2XjUxVLp1uw9V/hj4oJoapyS2sW4
cwIDAQAB
-----END PUBLIC KEY-----

我应该以某种方式使用此密钥来验证响应。我收到的响应是512个字符长的字符串:

"57ec50faf72340f9618cf690160ab6b251a2d76fcce61583779804a07f8ac1f520bf09a4f5918a3
<...>
245f8d00b2cce3fa1ecc849f8771be0c8"

现在我应该能够使用Public-key-string和我自己的散列值来验证我收到的签名。

我该怎么做?

修改

哈希&amp; API上使用的填充方案是&#34; SHA256_RSA_PKCS_PSS&#34;

0 个答案:

没有答案