.net 创建sha1哈希时如何使用machineKey validationKey?

.net 创建sha1哈希时如何使用machineKey validationKey?,.net,asp.net,hash,validation,.net,Asp.net,Hash,Validation,我们正在生成一个新的_validationkey,对吗?然后我们将字节放入ComputeHash中进行散列。_validationKey的意义是什么?当我们以某种方式验证散列时是否需要它 如果它在这个过程中没有任何作用,那么下面是真的吗 我有一个80字节长的字节数组,最后20个字节由asp.net sha1散列组成,如果sha1散列应该与最后20个字节匹配,那么前60个字节 validationKey在这方面不起作用?validationKey用于加密viewstate数据,并确保回发时返回的内

我们正在生成一个新的_validationkey,对吗?然后我们将字节放入ComputeHash中进行散列。_validationKey的意义是什么?当我们以某种方式验证散列时是否需要它

如果它在这个过程中没有任何作用,那么下面是真的吗

我有一个80字节长的字节数组,最后20个字节由asp.net sha1散列组成,如果sha1散列应该与最后20个字节匹配,那么前60个字节


validationKey在这方面不起作用?

validationKey用于加密viewstate数据,并确保回发时返回的内容有效


编辑:对不起,这并没有真正回答你的问题。validationKey仅在验证viewstate数据是否未被篡改时使用,并且您所指的SHA1是您希望对validationKey使用的算法类型。创建SHA1散列时不使用它,它仅用于asp.net页面。

在我的例子中,我发现验证密钥用于创建SHA1 hmac键控散列

如果我有一个80字节长的字节数组,最后20个字节由asp.net sha1散列组成,那么前60个字节,如果sha1散列应该匹配最后20个字节,是吗?validationKey在这方面不起作用?根据msdn,validationKey仅在enableViewStateMAC为true时使用,这就引出了一个问题,enableViewStateMAC如何使用validationKey,但我会将其保存到周一。谢谢。是否用于加密viewstate?错。它用于创建一个值,该值可以指示viewstate是否已更改。这不是加密!
<machineKey validation="SHA1" validationKey="<64-byte key>"
HMACSHA1 hashSha = new HMACSHA1(_validationKey);
byte[] ret = hashSha.ComputeHash(bytes, offSet, count);
return ret;