【问题标题】:.Net Support of SHA256withRSA.Net 支持 SHA256withRSA
【发布时间】:2014-06-21 04:48:56
【问题描述】:

我需要支持以下签名:

使用从 Google Developers Console 获得的私钥,使用 SHA256withRSA(也称为带有 SHA-256 哈希函数的 RSASSA-PKCS1-V1_5-SIGN)对输入的 UTF-8 表示进行签名。输出将是一个字节数组。

以下代码失败,“指定的算法无效”。这是.NET的限制吗?这是我的代码的 sn-p:

var rsa2 = new RSAPKCS1SignatureFormatter(rsa);
rsa2.SetHashAlgorithm("SHA256");
bytes = rsa2.CreateSignature(bytes);

上述要求来自为 Google API 计算服务器到服务器应用程序的签名。

https://developers.google.com/accounts/docs/OAuth2ServiceAccount#computingsignature

感谢您的帮助。

卡尔..

这是签署 JWT 的代码。我已经删除了 RSAPKC1SingatureFormatter 类的使用,并使用另一个 HASHCompute 方法来努力让 something 工作(仍然不工作)

我不确定这是否正确,不幸的是,我从 Rest 服务得到的响应总是相同的“无效授权”,很难说。

public string Generate(string HeadJWT, string ContentJWT, X509Certificate2 certificate)
{

  var bytes = Utility.getBytes(HeadJWT);
  var base64Head = Utility.Base64UrlEncode(bytes);

  // base64 Url Encode Payload (Json Content)
  bytes = Utility.getBytes(ContentJWT);
  var base64Payload = Utility.Base64UrlEncode(bytes);

  var secureInputValue = String.Format("{0}.{1}", base64Head, base64Payload);
  bytes = Stub.Jwt.Utility.getBytes(secureInputValue);
  bytes = Stub.Jwt.Utility.ComputeHMACSha265(bytes, certificate.PublicKey.EncodedKeyValue.RawData);

  _signature = Stub.Jwt.Utility.Base64UrlEncode(bytes);

  return String.Format("{0}.{1}.{2}", base64Head, base64Payload, _signature);
}

【问题讨论】:

  • 您有什么理由不使用 Google dot net 客户端库?会让事情变得更轻松。
  • 是的,我有兴趣学习 Google RESTful Api 而不是学习客户端库。服务帐户的文档似乎很简单,只是由于某种原因无法正常工作:|我在此处包含生成签名 JWT 的代码..

标签: asp.net oauth cryptography oauth-2.0 google-oauth


【解决方案1】:

这通常不是 .NET 的限制,因为 example Microsoft code 似乎使用 "SHA256" 本身。但这可能是您特定运行时的限制。

【讨论】:

  • 我的运行时,还是源私钥?私钥来自 Google Server 到 Server 应用程序开发控制台。我希望有类似经验的人已经走上了这条路,可以提供帮助。这看起来很简单,但问题显然出在细节上。
  • 作为对此的跟进,请参阅此线程,我在其中演示了 3 个签名测试,其中一个是确实有效的简单签名测试(如此处建议的)。所以现在我留下了一个问题(谷歌的证书是否支持签署 SHA256)stackoverflow.com/questions/23501320/…
  • 不幸的是我不知道答案。如果您查看我的个人资料,您会发现我可能已经扫描了所有加密和加密 Q/A :)
  • 感谢 owlstead 的跟进。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-24
相关资源
最近更新 更多