Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以检查哈希是否是使用SHA1生成的,并且是有效的哈希?_C#_Sha_Hmacsha1 - Fatal编程技术网

C# 是否可以检查哈希是否是使用SHA1生成的,并且是有效的哈希?

C# 是否可以检查哈希是否是使用SHA1生成的,并且是有效的哈希?,c#,sha,hmacsha1,C#,Sha,Hmacsha1,我遇到了一个问题,我想验证使用SHA1生成的哈希。是否可以进行反向工程并确定哈希是否是使用HMACSHA1 algo生成的?如果您拥有哈希数据,则可以对该数据使用SHA1哈希,并比较哈希值以查看它们是否相同。如果它们相等,则最初使用SHA1 简而言之,通过对哈希函数进行反向工程,您不能倒退。不,哈希代码中没有任何内容可以告诉您创建它所使用的算法。任何强散列码算法都是专门设计的,在散列码中不包含任何可追踪的元数据。没有特定的标记将哈希代码标识为哈希代码,也没有使用哪种算法 基本上,散列算法尝试使用

我遇到了一个问题,我想验证使用SHA1生成的哈希。是否可以进行反向工程并确定哈希是否是使用HMACSHA1 algo生成的?

如果您拥有哈希数据,则可以对该数据使用SHA1哈希,并比较哈希值以查看它们是否相同。如果它们相等,则最初使用SHA1


简而言之,通过对哈希函数进行反向工程,您不能倒退。

不,哈希代码中没有任何内容可以告诉您创建它所使用的算法。任何强散列码算法都是专门设计的,在散列码中不包含任何可追踪的元数据。没有特定的标记将哈希代码标识为哈希代码,也没有使用哪种算法

基本上,散列算法尝试使用所有输入作为种子创建强伪随机数。输出尽可能随机,没有可识别的模式可用于识别输入数据或算法


如果您有用于创建哈希代码的输入数据,则可以重新创建它并比较结果。但是,如果输入中只有一位不同,则会得到完全不同的哈希代码,因此输入必须完全相同。

您可以访问经过哈希处理的数据吗?实际上?如果没有用于生成哈希的原始消息?不,这是单向散列。你的上下文是什么?你的散列是从哪里来的?为什么你认为它们可能没有被正确地散列?你用你这边的散列做什么?基本上,如果有人给你发了一个散列,说是SHA1,你就得相信他们的话。大概如果他们在一段时间后再次发送给你,他们会以同样的方式对其进行散列,所以这并不重要。有一个简单的检查,以确保它是正确的长度。