加密算法之MD5

MD5加密算法

  加密的方式有两种,一种是客户端和服务器端整个通信信道进行保护加密,如HTTPS协议中的SSL,还有另一种加密是对通信数据本身进行加密,如MD5,接下来主要针对MD5进行研究。

       MD5加密就是信息摘要算法,是一种散列函数,可以将一个字符串,或文件,或压缩包,执行md5后,就可以生成一个固定长度为128bit的串。这个串,基本上是唯一的。

       所以,有人修改过压缩包后,就会生成新的串,这时就可以拿网站提供的串和新生成的串对比,如果不同,那就是被人修改过了。密码在前端进行加密,然后服务器使用摘要进行对比,这样在整个密码的校验过程中是在服务器端不知道明码的情况下进行的,极大的保障了密码的安全。

特点:

1、压缩性:任意长度的数据,算出MD5值长度都是一样的;

2、容易计算:从原数据计算出MD5值很容易;

3、抗修改性:对原数据进行任何修改,得到的MD5值都有很大区别;

4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(伪造数据)是非常难的。

作用:

1、一致性检验;

2、数字签名(指纹)

3、安全访问认证(注册)

4、在避免文件内容被篡改方面有重大作用,md5可以对字符串进行不可逆的加密,这使得可以生成一个128bit的大数,由于md5算法的原因,他与源文件相对应,即使在文件中做了很小的修改,那么生成的字符串也是差别巨大。

破解:

  在破解md5方面,最常用的方法是“跑字典”,有两种方法得到字典,一种是日常搜集的用做密码的字符串表,另一种是用排列组合方法生成的,先用MD5程序计算出这些字典项的MD5值,然后再用目标的MD5值在这个字典中检索。我们假设密码的最大长度为8位字节(8 Bytes),同时密码只能是字母和数字,共26+26+10=62个字节,排列组合出的字典的项数则是P62,1+P62,2)….+P62,8),那也已经是一个很天文的数字了,存储这个字典就需要TB级的磁盘阵列,而且这种方法还有一个前提,就是能获得目标账户的密码MD5值的情况下才可以。

使用md5加密算法实现登录

  实质上加密算法只是将注册时的密码通过MD5转化为更多位数,更复杂的字符串,经hash运算后进而将其存在数据库(文件系统)中,然后在用户登录时采用同样的方法加密,将用户输入的密码进行MD5 hash运算,再从数据库中取出数据,进行比对,从而实现登录操作。要遇到了md5密码的问题,比较好的办法是:你可以用这个系统中的md5()函数重新设一个密码,如admin,把生成的一串密码的Hash值覆盖原来的Hash值就行了。

猜你喜欢

转载自blog.csdn.net/century_sunshine/article/details/79939049