现在的位置: 首页 > 综合 > 正文

什么是MD5算法?

2013年08月03日 ⁄ 综合 ⁄ 共 711字 ⁄ 字号 评论关闭

       想一下:当我们去银行存钱的时候,如果我们银行卡的密码在计算机中呈明文显示,那么会有什么缺点?

       不用解释就可以想到,明文存放密码不安全,黑客一旦攻击到银行的数据库系统,那么里面所有卡号的密码都展露无余;即便是银行工作人员我们也不希望他们看到自己的密码。因此我们需要对密码进行加密。

       对于加密的方式有很多种,在此只是简单的介绍一种:MD5算法加密

       MD5算法是一种散列(hash)算法,不是一种纯压缩算法,不是一种加密算法。

       MD5加密就是将任意长度的字符串转换成一个唯一的32位字符。可以看到:任意长度字符串——唯一的——固定长度(32位)字符

       从上面的分析中可以看到MD5算法的一个缺点,就是:源数据是无限的(因为是任意长度),而MD5的个数是有限的(因为长度固定)。那么就会存在这样一种情况:两个源数据对应一个MD5值(多对一的关系)。

       这也正是MD5算法不可逆的原因。

 

       当丢失密码的时候是密码重置还是找回密码?

       由于用MD5算法转换出来的密码是不可逆的,因此当用户丢失密码的时候是没有办法帮用户找回之前的密码的,只能提交申请,系统重新给用户设置一个新的密码。

 

       也许大家听过王小云破解MD5算法的消息。从原理上来说MD5算法是不可逆的,唯一攻击的办法就是碰撞(因为存在多个源数据对应一个MD5值得情况),但是这种碰撞的几率是非常非常非常的小,而王小云做的只能发现了缩短枚举碰撞时间的理论而已。

       大家以后在用的时候为了更加增加暴力破解MD5算法的难度,可以算两次MD5值,或者是加上一个固定的字符串。

抱歉!评论已关闭.