存储用户密码和数据

来自:https://blog.csdn.net/u012491783/article/details/79465559

密码阶段:

1、单向hash(MD5)

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

2、hash+salt

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

3. PBKDF2, BCrypt 或 SCrypt 算法 

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

4、第三方密码服务商



我感觉 怎么才能安全呢,就是 将密码的计算,不单纯是固定的算法 ,而是加入物理因素,也就上面提到的计算过程中所需要的资源等因素来确定结果

由伪随机数和真随机数的联想到的:

只要这个随机数是由确定算法生成的,那就是伪随机,只能通过不断算法优化,使你的随机数更接近随机。

通过真实随机事件取得的随机数才是真随机数。计算机系统可以产生统计意义上的真随机数,

如果把软件,代码,算法想象成一个封闭的系统,那么也许可以引入系统以外的变量?比如说,硬件?

一个典型的例子是 Unix 内核中的随机数发生器(/dev/random),理论上它能产生真随机。即这个随机数的生成,独立于生成函数,这时我们说这个随机数发生器是非确定的。

具体来讲,Unix 维护了一个熵池,不断收集非确定性的设备事件,即机器运行环境中产生的硬件噪音,来作为种子。

比如说,时钟,IO 请求的响应时间,特定硬件中断的时间间隔,键盘敲击速度,鼠标位置变化,甚至周围的电磁波等等……直观地讲,你每按一次键盘,动一下鼠标,邻居家 wifi 信号强度变化,磁盘写入速度等等信号,都可能被用来生成随机数。

原文地址:https://www.cnblogs.com/doublethree/p/9691519.html

时间: 2024-08-02 00:53:20

存储用户密码和数据的相关文章

如何安全的存储用户密码?

原文链接:请猛击 本文我只截取了一小部分知识,请看原文. 一:基础知识:加盐哈希( Hashing with Salt) 我们已经知道,恶意攻击者使用查询表和彩虹表,破解普通哈希加密有多么快.我们也已经 了解到,使用随机加盐哈希可以解决这个问题.但是,我们使用什么样的盐值,又如何将其 混入密码中? 盐值应该使用加密的安全伪随机数生成器( Cryptographically Secure Pseudo-Random Number Generator,CSPRNG )产生.CSPRNG和普通的伪随机

如何安全的存储用户密码?(下)代码实现pbkdf2算法加密

这辈子没办法做太多事情,所以每一件都要做到精彩绝伦! People can't do too many things in my life,so everything will be wonderful   乔布斯 本文参考博客: http://wyait.blog.51cto.com/12674066/1918470和 http://wyait.blog.51cto.com/12674066/1918474 参考资料:java API6.0中文版.chm 本文以java为例,进行实际加解密操作

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

我们数据库的权限管理十分严格,敏感信息开发工程师都看不到,密码明文存储不行吗? 不行.存储在数据库的数据面临很多威胁,有应用程序层面.数据库层面的.操作系统层面的.机房层面的.员工层面的,想做到百分百不被黑客窃取,非常困难. 如果密码是加密之后再存储,那么即便被拖库,黑客也难以获取用户的明文密码.可以说,密码加密存储是用户账户系统的底裤,它的重要性,相当于你独自出远门时缝在内衣里钱,虽然你用到他们的概率不大,但关键时刻他们能救命. 那用加密算法比如AES,把密码加密下再存,需要明文的时候我再解密

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

大多数的web开发者都会遇到设计用户账号系统的需求.账号系统最重要的一个方面就是如何保护用户的密码.一些大公司的用户数据库泄露事件也时有发生,所以我们必须采取一些措施来保护用户的密码,即使网站被攻破的情况下也不会造成较大的危害.如果你还在存储用户密码的MD5,那可真的有点弱了.赶紧来看看这篇文章吧. 保护密码最好的的方式就是使用带盐的密码hash(salted password hashing).对密码进行hash操作是一件很简单的事情,但是很多人都犯了错.接下来我希望可以详细的阐述如何恰当的对

疑似网易泄露用户密码事件浅析

事件概述 2015年10月19日下午,乌云漏洞报告平台宣布接到一起惊人的数据泄密报告,网易的用户数据库疑似泄露,影响到网易163/126邮箱过亿数据,泄露信息包括用户名.密码MD5值.密码密保信息MD5值.登陆IP地址以及用户生日等,解开后测试大部分邮箱依旧还可登陆. 乌云建议用户登陆reg.163.com用户中心,在风险提示处查询近一个月的异常登录记录,以及异地登陆提醒邮件.如有异常,需尽快修改密码,改密码的同时也将密码提示答案进行更新修改,同时开启邮箱的安全防护功能. 另外,对于已被破解的网

从12306帐号泄漏谈用户密码安全

新闻回顾 12月25日圣诞节,据漏洞反馈平台乌云网显示,大量12306用户数据在互联网疯传.本次泄露的用户数据包括用户帐号.明文密码.身份证.邮箱等. 随后,12306官方发表公告,称经过认真核查,此泄露信息全部含有用户的明文密码.12306网站数据库所有用户密码均为非明文转换码,网上泄露的用户信息系经其他网站或渠道流出. 12月26日,中国铁路官方微博发消息,铁路公安机关将涉嫌窃取并泄露12306网站电子信息的两名犯罪嫌疑人抓获,并指出此次用户信息泄漏事件是犯罪嫌疑人"撞库"来完成信

android开发关于sp共享数据存储(记住账号密码储存数据例子)

本文内容过sp共享数据存储实现记住账号密码功能 *************************************************************************************************************************** public class MainActivity extends Activity { private AutoCompleteTextView completeTextView; private Ed

Python开发之用户密码存储

在各种线上应用中,用户名密码是用户身份认证的关键,它的重要性不言而喻.一方面,作为保护用户敏感数据的钥匙来说,一旦被破解,系统将敞开大门完全不设防.另一方面,密码这把钥匙本身就是非常敏感的数据:大多数用户会在不同应用中使用近似甚至完全相同的密码.一旦某一个应用的密码被破解,很可能坏人就此掌握了用户的“万能钥匙”,这个用户的其它应用也相当危险了. 这篇博文就重点讨论对于密码本身的存储的安全性考虑,而系统自身的安全性不在此文的范围之内. 对于如此重要的用户密码,究竟该怎样在系统中存储呢? “君子不立

iOS项目开发实战——使用用户首选项数据API存储信息

开发过Android的同学都知道,在Android中四大组件之一的Content Provider,这是一种轻量级的数据存储组件,可以存储一些简单地配置信息或者用户信息.比如最常用的地方就是记住用户名密码,使用户下次打开应用的时候可以不再输入,方便操作.来到iOS中,苹果也提供了类似功能的API--用户首选项数据,用于存储简单的用户配置信息.实用.方便.高效.具体实现步骤如下: (1)在Main.storyboard中拖入一个输入文本框TextView和保存按钮Button,等下要把文本框中的内