当前位置: 欣欣网 > 码农

面试官:为什么忘记密码要重置,而不是告诉我原密码?

2024-04-24码农

推荐关注

扫码关注 后端架构师 」,选择 星标 公众号

重磅干货,第一时间送达!

责编:架构君 | 来源:前端充电宝

上一篇好文:

正文

大家好,我是后端架构师。

在网络世界中,密码是我们保护个人账户安全的第一道防线。然而,我们经常会遇到忘记密码的情况,而大多数网站在这种情况下只提供密码重置服务,而不是直接告诉我们原始密码。这背后的原因是什么呢?本文将探讨这一现象背后的原理!

密码存储的安全性

假设你在一个网站注册了一个账户,设置了密码为 "Password123"。为了确保这个密码的安全,通常采用哈希算法来存储密码。哈希算法是一种单向加密过程,它可以将任意长度的输入数据转换成固定长度的输出,但这个过程是不可逆的。

以SHA-256算法为例,如果你的密码 "Password123" 通过SHA-256哈希后,将会得到一个64位的 哈希值 ,如:

5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8

这个哈希值是唯一的,即使有其他用户设置了相同的密码,由于哈希算法的特性,他们的哈希值也将是相同的。网站将这个哈希值存储在数据库中,而不是你的原始密码。

哈希算法的特性

哈希算法具有以下几个关键特性:

  • 不可逆性 :从哈希值几乎不可能推导出原始数据。即使黑客获取了数据库中的哈希值,他们也无法得知原始密码是什么。

  • 确定性 :相同的输入总是产生相同的哈希值。这意味着每次对 "Password123" 进行哈希处理,都会得到相同的哈希值。

  • 高度散列 :即使输入数据的微小变化,也会导致哈希值的巨大变化,这使得破解哈希值变得极其困难。

  • 尽管哈希算法具有上述优点,但在理论上仍存 哈希碰撞 的可能性,即两个不同的输入可能产生相同的哈希值。为了降低这种风险,网站通常会使用 盐值 (Salt)技术。盐值是一个随机生成的数据片段,它会与用户的密码结合后再进行哈希处理。

    假设你的密码 "Password123" 加上一个独特的盐值 "randomSalt",结合后的字符串为 "Password123randomSalt"。这个字符串再次进行哈希处理,得到一个新的哈希值,然后将这个哈希值存储在数据库中。这样,即使两个用户使用了相同的密码,由于盐值的不同,他们的哈希值也会不同,从而进一步增强了密码的安全性。

    登录时的密码验证

    在用户登录时,系统并不是直接比较用户输入的密码和数据库中存储的哈希值。这是因为哈希值是不可逆的,无法直接比对原始密码和哈希值。相反,系统会执行以下步骤来验证用户的身份:

    1. 用户输入他们的密码。

    2. 系统对接收到的密码执行与存储在数据库中相同的哈希算法,并添加相同的盐值(如果使用了盐值)。

    3. 系统生成一个新的哈希值。

    4. 系统将新生成的哈希值与数据库中存储的哈希值进行比较。

    如果这两个哈希值相匹配,那么系统就会认为用户输入的密码是正确的,因为只有正确的原始密码经过相同的哈希过程才能生成匹配的哈希值。这样,即使数据库中存储的是哈希值,系统也能验证用户的密码,同时确保密码的安全性。

    密码重置的必要性

    由于网站存储的是密码的哈希值而不是原始密码,当用户忘记密码时,网站无法提供原密码。相反,网站会引导用户通过重置密码的方式来恢复账户访问权限。用户设置的新密码将被哈希处理并存储,替换掉之前的哈希值。这样做不仅保护了用户的密码安全,也符合现代网络安全的最佳实践。

    通过上述例子可以看到,当我们忘记密码时,网站只能提供重置密码的服务,而不是告诉我们原密码,这是为了确保用户数据的安全性。哈希算法和盐值技术的应用,使得即使在数据泄露的情况下,用户的原始密码也能得到保护。在登录过程中,系统通过重新计算哈希值并比对,来验证用户的身份。

    你还有什么想要补充的吗?

    最后,再次推荐下我们的AI星

    为了跟上AI时代我干了一件事儿,我创建了一个知识星球社群:ChartGPT与副业。想带着大家一起探索 ChatGPT和新的AI时代

    有很多小伙伴搞不定ChatGPT账号,于是我们决定,凡是这三天之内加入ChatPGT的小伙伴,我们直接送一个正常可用的永久ChatGPT独立账户。

    不光是增长速度最快,我们的星球品质也绝对经得起考验,短短一个月时间,我们的课程团队发布了 8个专栏、18个副业项目

    简单说下这个星球能给大家提供什么:

    1、不断分享如何使用ChatGPT来完成各种任务,让你更高效地使用ChatGPT,以及副业思考、变现思路、创业案例、落地案例分享。

    2、分享ChatGPT的使用方法、最新资讯、商业价值。

    3、探讨未来关于ChatGPT的机遇,共同成长。

    4、帮助大家解决ChatGPT遇到的问题。

    5、 提供一整年的售后服务,一起搞副业

    星球福利:

    1、加入星球4天后,就送ChatGPT独立账号。

    2、邀请你加入ChatGPT会员交流群。

    3、赠送一份完整的ChatGPT手册和66个ChatGPT副业赚钱手册。

    其它福利还在筹划中... 不过,我给你大家保证,加入星球后,收获的价值会远远大于今天加入的门票费用 !

    本星球第一期原价 399 ,目前属于试运营,早鸟价 149 ,每超过50人涨价10元,星球马上要来一波大的涨价,如果你还在犹豫,可能最后就要以 更高价格加入了 。。

    早就是优势。 建议大家尽早以便宜的价格加入!

    欢迎有需要的同学试试,如果本文对您有帮助,也请帮忙点个 赞 + 在看 啦!❤️

    在 还有更多优质项目系统学习资源,欢迎分享给其他同学吧!

    PS:如果觉得我的分享不错,欢迎大家随手点赞、转发、在看。

    最后给读者整理了一份BAT大厂面试真题,需要的可扫码加微信备注:「面试」获取。

    版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢!

    END

    最近面试BAT,整理一份面试资料【Java面试BAT通关手册】,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。在这里,我为大家准备了一份2021年最新最全BAT等大厂Java面试经验总结。

    别找了,想获取史上最全的Java大厂面试题学习资料

    扫下方二维码回复面试就好了

    历史好文:

    扫码关注后端架构师」,选择星标公众号

    重磅干货,第一时间送达

    ,你在看吗?