MD5CryptoServiceProvider的哈希算法是否使用某种键?如果我有一个webfarm(或Windows Azure中的多个Web角色),在不同服务器上给定相同输入的情况下,散列的结果总是相同的吗?或者我是否必须在所有服务器上的web.config上设置某种键?
答案 0 :(得分:2)
加密哈希函数将始终给出相同的结果。他们没有拿钥匙。
但对于大多数应用程序,我会避免使用MD5来支持SHA-2。 MD5已被打破,特别是发现碰撞很容易。 MD5和普通SHA-2都不适合密码散列,如果这是你正在做的事情。
有一个相关的概念:消息认证码(MAC)。作为最流行的形式之一,HMAC基于以某种方式对消息和密钥进行散列。
为防止篡改参数,我建议使用带有Base64编码的HMAC-SHA-256。如果它太长,你可以截断它。你不应该做的是使用Hash(key + message)
,这很容易受到长度延长攻击。
答案 1 :(得分:0)
根据这个,Retrieve ASP.Net AutoGenerated MachineKey,答案听起来没有(不需要密钥,并且在webfarm上工作正常)