【问题标题】:Hashing and keys on webfarms with MD5CryptoServiceProvider使用 MD5CryptoServiceProvider 在 webfarm 上进行散列和密钥
【发布时间】:2012-06-06 23:48:17
【问题描述】:

MD5CryptoServiceProvider 的哈希算法是否使用某种密钥?如果我有一个 webfarm(或 Windows Azure 中的多个 web 角色),在不同服务器上的相同输入的情况下,哈希的结果是否总是相同?还是我必须在所有服务器的 web.config 上设置某种键?

【问题讨论】:

  • 你想用哈希做什么?你哈希什么?您需要哪些安全保证?
  • 我们不需要非常安全。我们使用查询字符串将一些参数传递给 URL,我们只需要较小的安全性来确保参数没有被篡改。
  • 在这种情况下,HMAC 可能是正确的解决方案。不要从散列构造一个 ad-hoc MAC。

标签: c# .net md5 hash


【解决方案1】:

加密哈希函数总是会给出相同的结果。他们不拿钥匙。

但对于大多数应用程序,我会避免使用 MD5,而使用 SHA-2。 MD5 已被破坏,特别是发现碰撞很容易。 MD5 和普通 SHA-2 都不适合密码散列,如果你正在这样做的话。

有一个相关的概念:Message-Authentication-Codes (MAC)。 HMAC 是最流行的形式之一,它基于以某种方式对消息和密钥进行哈希处理。


为防止参数被篡改,我推荐使用 HMAC-SHA-256,使用 Base64 编码。如果它太长,你可以截断它。你不应该做的是使用Hash(key + message),这很容易受到长度扩展攻击。

【讨论】:

    【解决方案2】:

    据此,Retrieve ASP.Net AutoGenerated MachineKey,答案听起来像是“否”(不需要密钥,并且在 webfarm 上一切正常)

    【讨论】:

      猜你喜欢
      • 2011-01-20
      • 2011-12-04
      • 1970-01-01
      • 2021-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-25
      • 2019-01-14
      相关资源
      最近更新 更多