每天,我们不论通过手机还是电脑,都要登录无数的网页,但是,网页是如何存储我们的登录信息的呢?这一直是我们好奇的事情,今天,小编就带领大家来了解一下自己的密码是如何存储在网站上的哦!
早期也就是很早的时候,系统里可能直接存的就是用户的明文密码,密码是什么就存什么,然后每次校验直接匹配就好了.后来人们开始使用哈希进行加密,得到现在的普遍使用的密文.
最简单的基于密文的密码存储策略(通常可能是MD5加密方式)就是我下面画的图:
网站如何存储密码流程图
       哈希算法是一个单向的函数,将任意大小的数据转换成统一长度的密文,并且无法被反向计算.并且每个不同数据 通过哈希函数 转换成的结果都是不同的.
程序中真正比对的是密文哈希值,只有相同才被授权.不相同也不要告知到底是用户名错误还是密码错误,给出一个模糊的提示就行,防攻击者在不知道密码的情况下,遍历出可用的用户名.
不是所有的哈希函数都是安全的,适用于加密的.有些哈希函数是用于哈希表这类数据结构,方便快速查找的.适用于加密的有类似于:SHA256,SHA512,RipeMD之类的哈希函数.
最后要说明,单纯的哈希加密太容易破解了,从目前的状况看它并不安全.
为何说单纯的哈希加密并不安全?
       之所以说单纯的哈希加密并不安全因为破解的方式有很多,鉴于现在计算机性能(CPU发展已经到了一个瓶颈,现在普通的笔记本性能几乎就是20年前的超级计算机)的提升以及黑客技术的进步,很多网站都提供了破解哈希的功能.下面列举出一些常用的破解方式:
暴力破解(这是不可阻止的破解方式之一,在给定长度的情况下尝试各种字符的组合,虽然效率非常低,但通过遍历最终一定会得到密码,相当于把所有的可能都尝试一遍)
字典攻击(同样是不可阻止的破解方式之一,相当于暴力破解的升级版,通过收集常用的单词,词组,密码然后将所有的都存储起来,根据这些更加接近的数据进行比对,碰运气去猜)
查表法(预先计算密码字典中得每个密码,然后把哈希值和对应密码存储到一个快插查询的数据结构中,以后就查询这个表就行了)
彩虹表(这才是大杀器,说白了就是把一定长度的明文密码以及对应的哈希密码都存储下来,然后按照查表法的方式进行破解)
今天,小编告诉大家的问题,能否满足大家的好奇心呢!希望对大家有所帮助哦!