我正在学习MD5。我在大多数MD5描述中找到了一个术语“哈希”。我用谷歌搜索'哈希',但我在计算机编程中找不到'哈希'的确切术语。
为什么我们在计算机编程中使用'hash'?这个词的起源是什么?
答案 0 :(得分:10)
我会说任何答案都必须是猜测,所以我会把它变成一个社区维基。
哈希,或土豆煎饼,是将土豆切成长条状(比薯条小,更短,但比例相似)制成的早餐食品,然后将动物或植物脂肪中的大块油炸至褐色,粘在一起,煮熟。通过类比,“散列”一个数字意味着使用一种仍然确定性地取决于输入数字的方法将其转换为另一个数字,通常是较小的数字。我认为术语“哈希”最初是在“哈希表”的上下文中使用的,哈希表在20世纪60年代常用于大型机类型的机器上。在这些情况下,通常将具有大范围的整数值转换为“哈希表索引”,其是小整数。对于有效的哈希表来说,重要的是“哈希函数”是均匀分布的,或者是“平坦的”。
我没有引用,这就是我在80年代听到这个类比的理解。但是,当第一次使用该术语时,必须有人在那里。
答案 1 :(得分:7)
哈希值(或简称哈希) 称为消息摘要,是一个数字 从一串文本生成。该 哈希值远小于 文本本身,由a生成 公式就是这样的 其他一些人极不可能 text将产生相同的哈希值。
答案 2 :(得分:3)
您正在引用"hash function"。它用于为给定的参数集生成唯一值。
哈希的一个很好的用途是密码安全性。您可以保存密码的哈希值,而不是在数据库中保存密码。
答案 3 :(得分:3)
哈希应该是从00到FF(十六进制)的值的唯一组合,它表示某个数据,无论是文件还是字节串。它主要用于密码存储和验证,并测试文件是否与另一个文件相同(即您散列两个文件,如果它们匹配,则它们是相同的文件)。
通常,任何SHA算法都优于MD5,因为使用它时可能会发生哈希冲突。请参阅this Wikipedia article。
答案 4 :(得分:1)
添加到gabriel1836的答案中,哈希函数的一个重要属性是它是单向函数,这意味着你无法从其哈希值生成原始字符串。
答案 5 :(得分:1)
根据维基百科article on hash functions,计算机程序设计艺术中的Donald Knuth能够在1953年通过Hans Peter Luhn将哈希函数的概念追溯到内部IBM备忘录。
只是为了好玩,这是Two Women in the Klondike: the Story of a Journey to the Gold Fields of Alaska(1899)引用的一些无意中听到的对话:
他们必须整天保持哈希表来为我们提供帮助。 'T将是一个短期订单。
答案 6 :(得分:1)
哈希函数哈希输入值,需要salt value并且不需要证明盐来存储。有迹象表明,我们必须同时存储盐和新的仍然工作。数学上相关的概念是bijection