我需要使用外部授权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;