MD5是一种散列函数,在计算机安全领域得到广泛应用。然而,MD5国际密码算法被王小云研究团队证实并不安全,因为MD5本身存在一些缺点,这些缺点导致了MD5并不是很安全,可能会带来信息安全上的问题。那么,MD5加密有哪些问题,如何提高安全性?
md5安全吗?
MD5不够安全,一是因为字典表很大。网上有很多MD5界面网站,通过在数据库存储很多常用的密码,可以在很短的时间内查找任何哈希值的答案。这种数据库占用大量的磁盘空间,具有一定的成功率。
在计算机安全领域,一些朋友需要用到MD5解密网站(md5.cn),通过这类型的网站,可以提高工作效率,大家可以去试试。
二是,碰撞。安全的算法具有良好的抗冲突性,也就是说对于不同的单词,获得相同哈希值的可能性比较低,但是MD5的抗冲突性较低。
三是,暴力gong击速度很快。蛮力gong击是通过尝试多种可能性来查找密码的一种方法,即可以猜测用户可能使用的东西(出生日期,孩子的名字,宠物的名字等),也可以尝试一切(从a,b, c到10个字符的特殊字符密码)。抵御暴力gong击的唯一方法可能是密码长度,如果您拥有40个字符长的随机密码(带有特殊字符),那么目前你的密码可能是安全的。
MD5加密有哪些问题?
用户注册的时候保存的是用户输入密码的散列值,而不是保存密码。
这样在用户登录的时候,将用户的密码使用散列算法计算一下散列值,和数据库注册的时候保存的散列值比较一下。如果相同就认为登录成功。
其实这样是不安全的,只要把经常出现的密码和对应的散列值保存起来,保存到数据库。只要拿到用户密码的散列值,只要用户的密码不是非常复杂的,就很有可能把散列值的原始密码找出来。这样黑客就会继续撞库。
此时我们可以使用加盐算法。
在用户注册的时候,生成一个随机的复杂字符串做为"盐",这个盐也保存在数据库里面。同时把用户输入的密码加上这个盐,再计算出散列值保存在数据库中。这样在用户登录的时候,只要把用户输入的密码和盐连接起来,计算出一个散列值,再和数据库中的散列值比较一下,就可以知道密码是不是正确的了。
由于盐比较复杂,导致用户的密码和盐连接在一起的字符创更加复杂。这样计算出的散列值就很难反向推算出原始的密码了。即使用户密码很简单,不法分子拿到了散列值,也无法解密密码,也没法去别的网站尝试撞库了 。
MD5不安全,如何提高数据库的安全性?
1、用盐
尝试做的第一件事就是在加密密码时使用salt,基本上,盐是您在每个密码之前和/或之后添加的单词。如果盐是“ randomsaltformypassword”,并且用户选择“ 654321”作为密码,则将“ randomsaltformypassword654321”用作MD5功能参数。
这样,你就可以在数据库中加密更长的密码,并且黑客很难找到相应的密码,请确保选择长字样以充分提高安全性。
2、使用长密码
强制用户使用更长的密码(可能是15个字符或更多),此外还可以增加密码的复杂度,以确保他们使用的是大写,小写和特殊字符。但是,人们经常会使用弱密码,因此很容易被猜到,更糟糕的是,有的人甚至在便签纸上记录密码。
3、使用其他哈希函数
最好的解决方案可能是使用其他加密算法,这不是最简单的方法,因为这可能必须更改数据库结构,但这可能是最安全的方法。
经过证实,MD5作为散列算法,仍然会存在两种不同数据会发生碰撞。而且,如果使用简单的密码,被解密出来的概率很大。这也是MD5不是很安全的原因。因此,大家设置密码的时候,可以设置复杂的密码,防止数据库被不法分子盗取后,拿去解密而轻易得到密码。
标签:加密,散列值,安全,数据库,用户,密码,安全性,MD5 From: https://blog.51cto.com/u_15718024/5975963