总的来讲,目前公认比较安全的存储密码方式是PBKDF2, BCrypt 或 SCrypt 算法产生的密码

历史上密码加密存储经历了如下几个阶段:

1. 单向hash(MD5)

做单向的hash加密,以MD5和sha算法为代表,这类做法比明文直接存储看起来要安全,但是如果在db被攻破的时候,以目前计算机的算力加之黑客的各种技术手段,其实跟明文是差别不大的,我们知道密码学里面破解密码最笨的一种方法是暴力破解,随着目前计算机硬件的发展,带来计算能力的提升,每秒钟上亿次的hash计算已经不是问题,直接暴力破解几乎是分秒的事情,另外与之相近的有一种字典表/彩虹表破解的手段,原理很简单,黑客们会把常见密码以及各种hash算法加密后的字符串整理到一个表中,因为只要是同一明文密码同一hash算法得出的值就是一样的,也就是说黑客不断完善整理的彩虹表可以用来任何MD5加密系统的破解,带着破解的db用户MD5密码那一列信息,直接循环去select 明文 from 字典表/彩虹表 where 密文 = 密码,基本可以破解目前多数人设置的普通密码。

2. hash+盐

早期为了改进单向hash的缺陷,为了让彩虹表失效,引入了盐,盐是随机生成的一个唯一字符串,连在明文密码后增强密码的随机性,然后再做hash得到的加密密文存储在db中,这样一个是相同的密码存在db中的值就不同了,另一个是彩虹表也不会再起作用了。但是同样以目前计算机的算力,暴力破解也是分分钟的事情,因为为了校验密码的原因,我们一般会把这种方法生成的密码和盐一块存在db中,明文+盐 hash= 密码,黑客在拿到盐和加密密码后,只需要用计算机不断去生成明文,然后计算就可以很快破解。这种方法是避免了彩虹表,但是暴力破解还是避免不了。

这种情况类似于目前比特币挖矿,以目前矿机的算力挖矿,加之比特币不断增加hash碰撞难度,暴力破解确实越来越困难,比特币越来越稀有,但是随着量子高性能计算机的发展,未来可能比特币这种hash碰撞的难度也是分秒钟的事。

3. PBKDF2, BCrypt 或 SCrypt 算法

这类算法有一个特点,算法中都有个因子,用于指明计算密码摘要所需要的资源和时间,也就是计算强度。计算强度越大,攻击者建立rainbow table越困难,以至于不可继续。这类算法也可以保证即使计算能力不断提高,只要调整算法中的强度因子,密码仍然不可能被轻易的攻破。

另:第三方密码存储服务商

如果一个系统对于密码存储的要求实在很高,比如说如果用户密码泄露会造成大量现金流失,损失是毁灭性不可逆的,那么可以考虑第三方密码存储服务商。在欧美金融界以及电商界,许多早期的大型银行,信用卡,金融机构的线上密码存储,就使用了比较靠谱的第三方存储服务,一方面是自身去开发维护一套复杂的密码存储系统成本可能比整个线上系统还要高,另一方面为了风险规避以及转移。

如何安全存储用户密码/数据库安全存储密码的方式相关推荐

  1. 用户密码加密存储十问十答,一文说透密码安全存储

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者 | 程序员赵鑫 来源 | cnblogs.com/xinzh ...

  2. python获取数据库用户名密码_在数据库中存储用户和密码

    我正在创建一个用户+密码的软件.认证后,用户可以访问一些半公共服务,但也可以加密一些只有用户才能访问的文件.在 用户必须按原样存储,如有可能,无需修改.在auth之后,只要软件还在运行,用户和密码都会 ...

  3. 程序员必备基础:如何安全传输存储用户密码?

    前言 我们开发网站或者APP的时候,首先要解决的问题,就是「如何安全传输和存储用户的密码」.一些大公司的用户数据库泄露事件也时有发生,带来非常大的负面影响.因此,如何安全传输存储用户密码,是每位程序员 ...

  4. Opera浏览器同步服务被黑,用户数据和存储密码泄露

    8月26日晚,知名浏览器厂商Opera发布公告,表示其云同步服务遭遇黑客攻击,开启了浏览器同步功能的用户将受影响. Opera公司的一台用于存储用户同步数据的服务器被攻破,如果用户开启了跨平台数据同步 ...

  5. 如何安全的存储用户密码

    文章目录 1.明文存储(极不推荐) 2.使用MD5或其它算法哈希后存储(较不推荐) 3.加盐后哈希存储(较推荐) 4.使用BCrypt算法加密后存储(非常推荐) 5.Spring Boot中使用jbc ...

  6. Dropbox怎么安全地存储用户密码?

    使用的朋友都知道,DropBox是一个文件云端存储.备份.共享的软件.在 Dropbox 平台上,用户可以进行线上储存.共享协作.管理文档照片等各类资料.DropBox同时提供Windows.Linu ...

  7. 如何安全的存储用户的密码

    大多数的web开发者都会遇到设计用户账号系统的需求.账号系统最重要的一个方面就是如何保护用户的密码.一些大公司的用户数据库泄露事件也时有发生,所以我们必须采取一些措施来保护用户的密码,即使网站被攻破的 ...

  8. 网站该如何存储用户的密码

    2019独角兽企业重金招聘Python工程师标准>>> 对那些有用户系统的网站来说,如果存储用户的密码是个问题. 大家都知道不能明文存储,这样一旦被脱了裤子,后果很严重, 简单的md ...

  9. 获取令牌密码_如何真正存储用户密码和api令牌(即密码)

    获取令牌密码 A cliché in posts detailing password storage schemes is to finish by telling the syadmins and ...

最新文章

  1. (转)JS之——解决IE6、7、8使用JSON.stringify报JSON未定义错误的问题
  2. iOS开发 - UITextView输入时高度自适应
  3. jenkins pipeline、用户权限管理、插件下载地址更改、凭证管理、自由风格项目构建、maven项目构建、常用的构建触发器、邮件发送、SonarQube代码审查
  4. codematic2连接mysql失败_codematic2.rar
  5. centos nodejs yarn安装及升级
  6. MATLAB案例学习-基于雷达和摄像头的传感器融合
  7. html5怎么在index设置背景,index.html · huangliusong/HTML5Canvas知乎登录页面动态线条背景动画代码 - Gitee.com...
  8. Java:处理PDF
  9. 王者-甄别同一板块强弱股的方法【真假美猴王】
  10. linux系统安全加固
  11. 【Python数据分析】数据挖掘建模——分类与预测算法评价(含ROC曲线、F1等指标的解释)
  12. 如何用python做兼职_python学会后可以干什么副业#做什么兼职副业好
  13. Linux命令----压缩解压缩
  14. nginx转发https:SSL_do_handshake() failed
  15. 2021-12-3 温故而知新-JavaScript隐式转换
  16. (TPR译文)全身表示教学方法
  17. 爬取彼岸图网4k图片
  18. Android手机怎么找回微信好友,安卓手机微信好友删了怎么找回 恢复误删好友
  19. 地磅称重无人值守称重软件在化工企业中的应用
  20. redis 清空db下_如何清空redis中的数据

热门文章

  1. 字符串常量池与StringBuilder
  2. 彻底关闭windows10的更新功能
  3. Linux审计与日志安全加固
  4. Android 调音器开发
  5. oracle里IW和WW 区别
  6. 就读的大学是新校区,比较偏僻是一种怎样的体验?
  7. ffmpeg 去水印,使用GPU让效率提升5倍
  8. c语言常量与变量ppt,C语言 变量、常量与数据类型.ppt
  9. Linux 时间钟和时间同步
  10. 指令周期、中断周期、机器周期(CPU周期)、时钟周期