2021-01-27 分类: 网站建设
开发网站离不开用户的注册与登录,今天来说说在网站开发的时候关于用户密码的保存方式,传统的方式有以下几种
密码加密的几类方式:
如果你只是简单的使用md5将用户的密码进行加密,那么如果你的库被别人拖了,现在有很多可以直接反查的网络工具就可以进行暴力破解,那么能不能有一种方法,用户的明文密码即使多次使用,但是数据库中记录的加密密码也是不同的,这样即使数据库被拖了,那么也很难暴力破解,真的有这种方法吗?
答案是肯定的,有一种加密方式叫加盐哈希加密,加密时混入一段“随机”字符串(盐值)再进行哈希加密。即使密码相同,如果盐值不同,那么哈希值也是不一样的。现在网站开发中主要是运用这种加密方法
可以看到,密码是123,但是使用该函数每次计算出来的值都是不一样的
'pbkdf2:sha256:50000$fESwY4Cl$38fdf741069ef37c207211b9bee69514582dc366660563d75c00e7cbfd7cbd8a'
'pbkdf2:sha256:50000$hUhR8Gr3$73d44814d5cd490c04e0559141fb327c31766a0314d82ee05e33c33e1559af78'
这样即使你的数据库被黑客拖了,通过暴力破解也是非常困难的。
generate_password_hash 函数定义为
generate_password_hash(password, method='pbkdf2:sha256', salt_length=8)
参数 「password」 为明文密码,「method」 哈希的方式,格式为 pbpdf2:
salt_length 盐值的长度,默认为8
>>> generate_password_hash('123',method='pbkdf2:sha1',salt_length=10)
'pbkdf2:sha1:50000$4GUBRzzizn$45b0f6b84a4ca4352b45feea8283fc48186f9ee8'
>>> generate_password_hash('123',method='pbkdf2:sha1',salt_length=8)
'pbkdf2:sha1:50000$4kHPpS9R$1f87c09c052342fd0d65b75aa70ababb1c17e7df'
>>> generate_password_hash('123',method='pbkdf2:md5',salt_length=8)
'pbkdf2:md5:50000$zppMHqux$01acb41e0b2858bbc849abf77692a9c0'
>>> generate_password_hash('123',method='pbkdf2:md5',salt_length=8)
'pbkdf2:md5:50000$rMaQutjR$1cc67c05e063cec0c8e5f8e048ddb5e1'
这个加盐哈希加密以后的密文,放到另外一台服务器上也是可以校验通过的,如果做网站数据库迁移也不用重新生成数据,使用这套加密算法可以很大程度上规避暴力破解密码,还是那名老话,密码是123456的就算使用再牛逼的加密你依然是不安全的,另外撞库也是不可避免的,所以作为用户可以尝试不同的网站使用不同的密码来规避撞库问题。
感谢评论区里帮忙指正,RSA是非对称加密,DES和AES是对称加密,并且md5不算是加密算法,只能说它可以起到加密明文的效果。
由于今日头条上发的文章对于代码排版不太方便,所以我将代码片段都使用了截图的方式,想要复制代码请点击 "了解更多"来查看原文或者微信搜索公众号"序语程言"
当前标题:在网站开发时你还是只用md5加密密码吗?
当前URL:https://www.cdcxhl.com/news/97635.html
成都网站建设公司_创新互联,为您提供域名注册、定制网站、品牌网站设计、标签优化、关键词优化、虚拟主机
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联
猜你还喜欢下面的内容