为什么忘记密码要重置,而不是告诉我原密码?
当前位置:点晴教程→点晴OA办公管理信息系统
→『 经验分享&问题答疑 』
在网络世界中,密码是保护账户安全的第一道防线。 不过,相信很多人都遇到过这样的情况:忘记密码后,点击“找回密码”,网站通常不会直接告诉你原来的密码,而是要求通过手机验证码、邮箱验证等方式重新设置一个新密码。 为什么网站不能把原密码直接发给我们? 原因并不是网站故意增加操作步骤,而是因为在正规的密码存储机制下,网站本身通常也不知道你的原始密码。
网站不会直接保存你的密码假设你注册了一个网站账户,并设置密码为:
如果网站直接把这串密码保存到数据库中,一旦数据库被黑客窃取,所有用户的账户密码都会直接暴露。 而且很多人习惯在多个平台使用相同或相似的密码。一旦某个平台发生数据泄露,攻击者就可能使用泄露的账号和密码,尝试登录用户的邮箱、支付平台以及其他网站。 因此,安全性较高的网站不会直接保存用户输入的原始密码,而是会先对密码进行特殊处理。 这种处理方式通常被称为“哈希”。 什么是密码哈希?哈希算法可以把一段任意长度的数据,转换成一串固定长度的字符。 例如,将密码:
进行哈希计算后,可能得到类似下面的结果: 网站最终保存的不是原始密码,而是经过计算后得到的哈希值。 当用户下次登录时,网站会对用户输入的密码进行同样的计算,然后比较两次得到的结果是否一致。 需要注意的是,上面的哈希值仅用于举例。实际的网站通常不会简单地使用普通的 SHA-256 算法保存密码,而是会使用专门为密码保护设计的算法,例如 Argon2、bcrypt、scrypt 或 PBKDF2。 哈希算法有哪些特点?哈希算法最重要的特点之一,就是它通常只能向一个方向计算。 也就是说,网站可以通过原始密码计算出哈希值,却无法通过哈希值直接还原出原始密码。 这也是为什么网站无法告诉你原密码。 除此之外,哈希算法还具有以下几个特点。 相同的内容会得到相同的结果在算法和其他条件完全相同的情况下,同一个密码经过计算后,得到的哈希结果也相同。 系统正是利用这一特点,在用户登录时判断密码是否正确。 密码发生细微变化,结果也会完全不同即使只修改密码中的一个字母,最终计算出的哈希值也可能发生巨大变化。 例如: 和: 虽然只相差一个数字,但经过哈希计算后,得到的结果通常完全不同。 这种特性可以让攻击者难以通过观察哈希值之间的规律,推测用户的原始密码。 仅仅进行哈希处理还不够虽然哈希算法无法直接反向还原,但攻击者仍然可以通过其他方式尝试破解密码。 例如,攻击者可以提前计算大量常见密码对应的哈希值,然后与泄露数据库中的数据进行比对。 像下面这些简单密码,都很容易出现在攻击者的密码字典中: 如果两个用户使用了相同的密码,而网站又采用完全相同的方式进行计算,那么两个人最终得到的哈希值也可能相同。 攻击者看到相同的哈希值后,就能判断这些用户很可能使用了同一个密码。 为了避免这种情况,网站还会加入一个重要的数据——盐值。 盐值是什么?盐值,英文名称为 网站会为每个用户生成不同的盐值,然后将盐值和用户密码结合,再进行哈希计算。 例如,用户设置的密码为: 系统为这个用户生成的盐值为: 系统会根据密码和盐值计算出最终结果。 由于每名用户使用的盐值不同,即使两个人设置了完全相同的密码,最终保存到数据库中的哈希值通常也不会相同。 盐值本身可以和哈希值一起保存在数据库中。它的作用并不是保密,而是让攻击者无法直接使用提前准备好的哈希数据进行批量比对,从而提高破解成本。 登录时,系统如何判断密码是否正确?用户登录时,网站并不需要知道原始密码,也不需要把数据库中的哈希值还原。 整个验证过程大致可以分为以下几步。 第一步:用户输入密码用户在登录页面输入账号和密码,并提交登录请求。 第二步:系统读取对应的盐值系统根据用户账号,从数据库中找到这个账户保存的盐值和密码哈希值。 第三步:重新计算哈希值系统使用相同的密码哈希算法,将用户本次输入的密码与盐值进行计算,生成一个新的哈希结果。 第四步:比较两次计算结果系统把新生成的哈希值,与数据库中保存的哈希值进行比较。 如果两者一致,系统就认为用户输入的密码正确,并允许用户登录。 如果两者不一致,则说明输入的密码错误。 整个过程中,系统只是在比较计算结果,并不需要保存或查看用户的原始密码。 为什么忘记密码后只能重置?了解密码的存储方式后,这个问题就很容易解释了。 因为网站数据库中保存的通常只是密码哈希值,而不是用户设置的原始密码。 同时,哈希值无法直接还原成原密码。 因此,当用户忘记密码时,网站没有办法把原来的密码发送给用户,只能先验证用户的身份,再允许用户设置一个新密码。 用户设置新密码后,系统会重新生成盐值和哈希值,并用新的数据替换数据库中原来的密码记录。 这就是密码重置的基本原理。 能直接告诉你原密码的网站,反而要小心如果某个网站在你忘记密码后,可以通过短信或邮件把原密码直接发送给你,这通常意味着该网站可能保存了你的明文密码,或者采用了可以还原密码的存储方式。 从安全角度来看,这并不是一件好事。 一旦网站数据库、服务器或管理后台遭到入侵,攻击者就可能直接获取用户的真实密码。 因此,“只能重置密码,不能找回原密码”,并不是网站功能不完善,而是一种更安全的设计。 数据库泄露后,密码就绝对安全吗?哈希和盐值可以显著提高密码的安全性,但并不代表密码绝对无法被破解。 如果用户设置的密码过于简单,攻击者仍然可能通过暴力尝试、字典攻击等方式,反复计算常见密码,直到找到相同的哈希结果。 例如下面这些密码,即使经过哈希和加盐处理,也可能很快被猜中: 所以,密码安全不仅取决于网站如何保存,也取决于用户设置的密码是否足够复杂。 怎样设置一个更安全的密码?一个相对安全的密码,通常应该具备足够的长度,并且不容易被猜到。 相比单纯堆叠特殊符号,更重要的是避免使用姓名、生日、手机号、身份证后几位以及常见单词等个人信息。 可以考虑使用多个无关词语组成较长的密码,或者直接使用密码管理工具随机生成并保存密码。 同时,不同网站尽量不要使用相同密码。 对于邮箱、支付平台、社交账号等重要账户,还应该开启双重验证。这样即使密码意外泄露,攻击者也很难仅凭密码登录账户。 最后网站在用户忘记密码后,只提供“重置密码”而不提供“查看原密码”,核心原因在于:正规网站通常不会保存用户的原始密码。 用户密码经过加盐和专用密码哈希算法处理后,网站数据库中保存的只是一段无法直接还原的计算结果。 登录时,系统通过重新计算并比较哈希值,判断用户输入的密码是否正确。 当用户忘记密码时,由于系统本身也无法获得原密码,只能在验证用户身份后,让用户重新设置一个新密码。 因此,下次再看到“忘记密码,请重新设置”的提示时,不必觉得麻烦。 恰恰相反,这通常意味着网站采用了更合理、更安全的密码保护机制。 、
该文章在 2026/8/4 9:54:34 编辑过 |
关键字查询
相关文章
正在查询... |