【问题标题】:How is the machineKey validationKey used when creating a sha1 hash?创建 sha1 哈希时如何使用 machineKey validationKey?
【发布时间】:2009-03-06 19:48:03
【问题描述】:
<machineKey validation="SHA1" validationKey="<64-byte key>"

validationKey 到底是做什么的?假设我使用 SHA1 创建了一个哈希。 validationKey 是如何发挥作用的?

考虑这段代码:

HMACSHA1 hashSha = new HMACSHA1(_validationKey);
byte[] ret = hashSha.ComputeHash(bytes, offSet, count);
return ret;

我们正在生成一个新的 _validationkey,对吗?然后我们获取我们的字节并在 ComputeHash 中对它们进行散列。 _validationKey 的意义何在?当我们以某种方式验证哈希时是否需要它?

如果它在这个过程中没有任何作用,那么下面的说法是否正确?

我有一个 80 字节长的字节数组,最后 20 个字节由 asp.net sha1 哈希组成,然后是前 60 个字节,如果 sha1 哈希应该与最后 20 个字节匹配

validationKey 在其中没有任何作用?

【问题讨论】:

    标签: .net asp.net hash validation


    【解决方案1】:

    validationKey 用于加密视图状态数据并确保回发返回的内容是有效的。

    http://msdn.microsoft.com/en-us/library/system.web.configuration.machinekeysection.validationkey.aspx

    编辑:对不起,这并没有真正回答你的问题。 validationKey 仅在验证您的视图状态数据未被篡改时使用,并且您所指的 SHA1 是您想要与您的validationKey 一起使用的算法类型。创建 SHA1 哈希时不使用它,它仅用于 asp.net 页面。

    【讨论】:

    • 因此,如果我有一个 80 字节长的字节数组,并且最后 20 个字节由 asp.net sha1 散列组成,那么前 60 个字节,如果 sha1 散列应该与最后 20 个匹配,是的? validationKey 不参与其中?
    • 根据msdn,validationKey仅在enableViewStateMAC为true时使用
    • 这引出了一个问题,enableViewStateMac 如何使用validationKey,但我会把那个留到星期一。谢谢。
    • 用于加密视图状态 ?错误的。它用于创建一个值,该值可以指示视图状态是否已更改。这不是加密!
    【解决方案2】:

    在我的例子中,我发现验证密钥用于创建 sha1 hmac 键控哈希。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-20
      • 2010-12-04
      • 2010-09-07
      • 2011-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多