Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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
Algorithm 哈希算法,它的用途?_Algorithm_Hash - Fatal编程技术网

Algorithm 哈希算法,它的用途?

Algorithm 哈希算法,它的用途?,algorithm,hash,Algorithm,Hash,我不完全理解散列算法。任何人都愿意以一种非常简单易懂的方式向我解释 谢谢 编辑:将其与文本文件中的用户名一起使用。有很多,但基本思想是快速(几乎)唯一地为一段数据生成一个标识符。然后可以将其用作表的索引,以便快速查找数据。大多数散列算法都有冲突,两个数据块将散列到同一个值,但对于最好的算法来说,这种情况极为罕见 举个例子来说明为什么这可能有用,比如说我把我所在城市的整个电话簿都翻了一遍。现在,当我想查找某人的号码时,我所要做的不是进行二进制搜索,而是通过哈希算法运行他们的姓名,然后直接转到我表中

我不完全理解散列算法。任何人都愿意以一种非常简单易懂的方式向我解释

谢谢


编辑:将其与文本文件中的用户名一起使用。

有很多,但基本思想是快速(几乎)唯一地为一段数据生成一个标识符。然后可以将其用作表的索引,以便快速查找数据。大多数散列算法都有冲突,两个数据块将散列到同一个值,但对于最好的算法来说,这种情况极为罕见


举个例子来说明为什么这可能有用,比如说我把我所在城市的整个电话簿都翻了一遍。现在,当我想查找某人的号码时,我所要做的不是进行二进制搜索,而是通过哈希算法运行他们的姓名,然后直接转到我表中的索引。

假设您要求某人基本上解释哈希的用法,请考虑数组。现在,想象一个巨大的阵列,您希望在其中查找仅位于一个阵列插槽中的特定数据段。您可以获取输入数据,并使用该数据计算索引,而不是遍历数组。使用与在数组中存储数据相同的公式,您可以跳转到所需数据的位置,而不是循环。

哈希算法试图使比较大数据更容易。比较散列值就足够了,而不是将数据与相等值进行比较


有很多不同的散列算法,其中一些是加密散列算法,如MD5、SHA1、SHA256等。如果有两个相等的散列值,则可以确定数据也是相同的。

散列表示数据之间的1对1关系。这是语言中常见的数据类型,尽管有时称为字典。散列算法是一种获取输入并始终具有相同输出的方法,也就是所谓的1:1函数。理想的散列函数是当同一进程总是产生唯一的输出时。所以你可以告诉某人,这是一个文件,这是它的md5散列。如果文件在运行期间已损坏,则md5哈希值将是另一个值

在实践中,哈希函数总是会产生相同大小的值,例如md5()is将始终返回128位,而不管输入的大小如何。这使得一对一的关系变得不可能。A采取额外的预防措施,使其难以产生具有相同输出的两个不同输入,这称为冲突。这也使得反转功能变得困难。散列函数用于密码存储,因为如果攻击者从何处获取密码的散列,则它会迫使攻击者在使用散列登录之前破坏该散列。要破解散列攻击,需要一个单词列表或一本英语词典,找到所有相应的散列值,然后遍历每个密码的列表以查找匹配项


md5()、sha0和sha1()都容易受到哈希冲突攻击,因此不应用于任何与安全相关的用途。相反,应使用sha-2系列的任何成员,如sha-256

你无意中发现了散列算法有很多“散列算法”,散列有很多用途。也许您的问题可以更具体一些?将其与文本文件中的用户名一起使用。您是指用于哈希表的哈希函数,还是指计算校验和(也称为“消息摘要”或“加密哈希”)为了检测数据损坏?即使对于名称搜索,我们也需要使用二进制或线性对吗?那么将其转换为hash@bharathmuppa不,那不对。您将名称散列为整数,然后直接转到该索引。出于好奇,很抱歉……有任何实例吗?