哈希是一种数学公式,它采用可变长度的数据串,通常以文本的形式,并将其转换为较短的字符串,固定长度的数值。哈希在计算机数据库中经常使用,以使搜索更快、更有效。哈希还用于加密,以确保密码不被泄露,以及对数字签名进行身份...
哈希是一种数学公式,它采用可变长度的数据串,通常以文本的形式,并将其转换为较短的字符串,固定长度的数值。哈希在计算机数据库中经常使用,以使搜索更快、更有效。哈希还用于加密,以确保密码不被泄露,以及对数字签名进行身份验证等用途。散列也使用哈希函数的名称,也可以被认为是算法。

哈希在促进数据库搜索中起着重要作用。
例如,由名字组成,如果用户搜索"John Doe",计算机就必须将搜索中的所有字符与每个数据库条目的字符进行匹配,名称中的每个字符都有26种不同的可能,即英文字母表中的字母,而条目的可变长度也会减慢速度搜索。
相比之下,应用散列函数将使计算机的工作更轻松。将每个文本字符串转换为一系列数字将简化搜索,因为计算机对每个字符只有10种检查方法:数字"0"到"9"。固定长度的数字序列还有助于计算机更有效地完成工作。
在应用了哈希函数的数据库中,所有条目都有一个对应的、唯一的数字。这称为哈希键。在这种情况下,当您进行搜索时,计算机首先将哈希函数应用于您编写的输入,例如"John Doe"。这将产生一个数值,例如"456789"。然后计算机可以快速将此结果与正确条目对应的哈希键匹配。
哈希也可以用作数字签名例如,发送者Robert想将文档发送给某人,而接收者Mary则希望确保文档在传输过程中没有被篡改,发送者Robert只需通过哈希函数来运行文档,这将产生一个数值。然后,罗伯特加密哈希密钥,并将文档与加密密钥一起发送。
Mary接收这两个项目并解密哈希密钥。现在,她可以看到文档在发送之前产生的数值。要验证她手中的文档是否完全相同,她通过计算机上的哈希函数运行文档。最后,她比较两个键。如果两个键相同,则文档在发送给收件人的过程中不会被更改。
存在许多不同的哈希函数,每个函数都有各自的数学公式。要使哈希函数工作,必须将任何冲突最小化,当两个数据库项具有相同的哈希键时会发生这种情况。哈希函数也必须是单向的。这意味着您可以从数据库项或文档生成键,但不能反过来。换句话说,您不能从原始文档的哈希键对其进行"反向工程"。