365bet体育在线投注_mobile.365-848.com-365bet官网手机版
做最好的网站

MD5加密算法在网站数据库安全方面的应用与查表

2019-01-07 15:18 来源:未知

  MD5为现在应用最广泛的Hash算法之一,在1992年由MIT 的Ronald L. Riverst提出,由MD4演化而来。该算法广泛应用于互联网网站的用户数据加密,能够将用户密码加密为128位的长整数。数据库并不明文存储用户密码,而是在用户登录时将输入密码字符串进行MD5加密,与数据库中所存储的MD5值匹配,从而降低密码数据库被盗取后用户损失的风险。

  但由于Hash碰撞的存在,MD5加密的数据并不安全,可以由生成相同Hash值的字符串破解,所以提出了加入随机数salt的MD5加密方法,一定程度上增大了字典攻击的难度。

  前一阵在新浪微博上,有一个人发布了这样一条微博:“出道互联网安全常识数学题假设你的网站所有用户密码都是md5加密(单向散列,非可逆)的,假设你网站有10万会员,如果你的用户库丢了,会有多少会员密码被破解?想想看。”当时我的一位朋友认为10万个密码全部都会被破解,我却不这样认为,因为根据我的先验知识:

  (1) MD5加密算法在互联网应用中广泛被使用,MD5不是简单的古典加密算法,不能通过逆向Decrypt解密,只能通过Hash碰撞破解(Hack);

  (2) 我曾经看过对同一个字符串进行MD5加密的结果,产生结果是随机的字符串(后来经过查找资料发现我所看到的不是简单的MD5加密,而是加盐后的结果);

  (3) MD5用作密码加密算法并不是绝对安全的,因为可能产生Hash碰撞,简单密码的MD5加密可以通过彩虹表查找到;

  (4) 我曾见过几个破解MD5加密的网站(),大多数的做法是先免费为用户暴力破解,积累起足够的数据库可以破解简单密码后,解密服务便开始收费,所以MD5密码的破解不应该那么简单。

  在经过对这个问题激烈的讨论过后,没过多久便发生了CSDN的数据库泄露事件,600万条数据库记录被任意传播。紧接着天涯论坛的数据库也泄露了,2000万条数据库记录被证实几乎均可以登录。而这两个网站的数据库中所保存的用户密码都没有经过加密,即为明文存储的。这种事情的发生更加证实了对网站数据库中所保存的用户密码进行加密的重要性。

  单向:该散列函数H是一个单向函数,即对于几乎所有的x,已知H(x)的值y求x是不可行的;

  弱无碰撞:已知x,求出x使得H(x)==H(x)在计算上是不可行的;

  MD5的全称是Message-Digest Algorithm 5,在1991年由MIT 的Ronald L. Riverst提出,由MD4演化而来,最终生成128位(4个32位的16进制数)的信息摘要算法。[2] MD5算法是一个不可逆的字符串变换算法,即看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串。

  1996年,MD5算法的设计被发现有缺陷,虽然当时并未被证明该缺陷是致命的,密码学专家建议使用其它加密算法(如SHA-1)。

  2007年,研究人员发现使用Chosen-prefix Collision方法,可以使包含恶意代码的程序产生合法的MD5值。

  以上实例证明,MD5算法的安全性并不高,不能应用于对安全性要求很高的SSL加密及数字签名之中。目前最被推荐的Hash加密算法应为SHA-2加密算法。

TAG标签:
版权声明:转载须经版权人书面授权并注明来源