你的密码安全吗?如何加密才安全?

你的密码安全吗?

我相信很多人会将密码设置为“123456”或者“12345678”或者“888888”。或者将密码设置为和姓名相关联的字母,比如张三的密码“zhangsan”或者“zs123456”。

我只能说,通过密码解密,上面的密码非常容易被解,可以说是不堪一击。这时候有人会问,现在密码保存不是通过MD5进行加密了吗?这样都不安全那么怎么样才安全?今天就来说说MD5,MD5算法是一种哈希算法,严格来说不能称之为一种加密算法,但是它可以达到加密的效果,因此我们经常会见到“MD5加密”这样的称呼。

MD5算法的优点

1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。

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

3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

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

MD5算法的不足

由于MD5算法强抗碰撞的特点,因此在实际应用中MD5被认为是非常安全的,但是在2004年,咱们中国山东大学的王小云教授以及她的同事在美国加州举办的密码学会议上宣布解密了MD5算法,其实也不是真正的解密,而是非常明显的加快了寻找一对碰撞的速度,利用她们的技术,可以在几个小时内就找到一对碰撞,极端情况下,甚至在2008年计算机的计算能力上,几秒钟就可以找到一对碰撞。

因此MD5算法的安全性就引起人们的担忧,所以在对安全性要求较高的场合,不建议直接使用MD5算法。

MD5算法的应用场景

登录、注册、修改密码等简单加密操作

①这个过程为什么要加密?

假设一个用户的手机号为18666666666,密码为123456,那么如果不对密码加密的话,数据库中存储的内容是下面这样:

username pwd
18666666666 123456

这样一旦数据库泄漏了,用户的所有信息都是明文摆在黑客面前的,后果非常严重。因此需要对密码进行加密存储,那为什么要选择MD5加密呢?

因为MD5加密有一定的安全保证,而且实现起来非常简单,我们当然可以采用其它的加密方式(如SHA家族算法、AES、RSA等),甚至是多种加密方式的组合,但是对安全性要求没那么高的场景,我们就采用了MD5加密。

如果我们采用了MD5加密,对用户的密码123456进行加密,那么数据库中存储的内容将大概是下面这样:

测试站点:md5.cn

username pwd
18666666666 e10adc3949ba59abbe56e057f20f883e

这样,即便数据库被泄露了,摆在黑客面前的是一堆密文,而且MD5加密是不可逆的,所以黑客也无法通过解密来得到用户的明文密码。如果想要更加安全,那就需要“加盐”。

加盐在密码学中就是指,在密码的任意位置插入一些指定的字符串(即盐值salt)的过程。加盐的目的就是为了增强密码的复杂度,从而使得密码及其哈希值不被收集在彩虹表里,使得用户的密码无法被破解。

文中使用的测试站点为:md5.cn,一站加密文加解密平台,数据库庞大且不停更新中。

猜你喜欢

转载自blog.csdn.net/m0_69916115/article/details/126666338