哈希值具有广泛的应用,例如作为存储位置的标记或作为验证文件的数字指纹。哈希函数在密码验证中也起着重要作用。下面我们将解释散列算法如何提高安全性。
这篇文章并不适合开发人员。相反,它的目的是使这个话题更贴近那些由于日常业务而没有详细技术知识的管理人员。
什么是哈希值?
哈希值是哈希函数处理数据后给出的结果。
示例:要求用户输入密码。为此,他输入了字符串 RCS 数据葡萄牙 “数据保护”。然后系统使用哈希算法从密码生成哈希值。
1.输入密码→“数据保护”
2.通过MD5计算哈希值→“3da775df8d065507c482a20bf7a93427”
无论输入值的长度是多少,哈希函数总是返回相同长度的字符串。
为什么要存储哈希值,而不是以明文形式存储密码?
下面的登录过程说明了为什么哈希值与密码一起起着重要作用:
身份验证:用户输入其访问数据(用户名和相应的密码)。
哈希函数:系统从密码生成一个哈希值。
身份验证:将生成的哈希值与存储在数据库中的哈希值进行比较。如果匹配,则授予用户访问所需的权利。
密码不以纯文本形式存储在系统中。这样做有充分的理由:
员工/管理员可以读取未加密的密码并登录用户帐户。
如果数据库遭到黑客攻击或者数据被窃取,攻击者可能会立即滥用被窃取的密码数据。
但是如果数据库中只存储哈希值,它并不包含完整的访问数据。攻击者无法登录帐户,因此无法造成任何直接损害。登录时输入哈希值作为密码也没有帮助。这会导致系统在身份验证/比较期间生成不匹配的值。