??斗地主捕鱼电竞提现秒到 广告位招租 - 15元/月全站展示
??支付宝搜索579087183领大额红包 ??伍彩集团官网直营彩票
??好待遇→招代理 ??伍彩集团官网直营彩票
??络茄网 广告位招租 - 15元/月全站展示
浅谈Hash

转载   鉴皇师   2018-11-06   浏览量:21


Hash,一般翻译做“散列”,也有直接音译为“哈?!钡?,就是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。(来源百度百科解释)

彩票开奖查询 www.kbyp.net Hash的特点

  • 算法是公开的
  • 对相同数据运算,得到的结果是一样的
  • 对不用数据运算,如MD5得到的结果都是32个字符长度的字符串
  • 这玩意没法逆运算

Hash的运用场景
通过它的这几个特点.我们可以谈谈Hash它的运用场景了
登陆密码加密
我们在开发的过程中首次登陆需要向服务器发送用户密码进行账户验证.但是用户的密码是非常隐私的信息.所以一定要使用加密?;?
直接使用Hash
那么目前最优的解决方案就是使用密码的Hash值进行验证

客户端
直接将用户输入的密码进行Hash运算,得到结果发送给服务器验证.因为Hash算法无法逆运算,所以就算Hash值泄露,用户真实密码也不会泄露.

服务端
需要服务器配合,在用户注册的时候,服务端的数据库中保存的就是用户密码的Hash值,而不是密码本身(根据Hash的特点,对相同的数据加密结果是一样的).这样就算服务器被攻克,用户的隐私信息也能起到一定的?;?
也就是现在为什么各类产品只提供重置密码的功能,而不再有找回密码的功能了.因为服务端本身也不知道用户的真实密码.
特别说明:用户的密码属于非常隐私的信息.因为大多数用户有一个特点.密码喜欢使用重复的.如果你的APP泄露了用户的密码.那么很有可能,***利用用户的手机号码加上密码,可以套出用户的支付信息.这种后果是非常严重的!
再加一点东西
上面所说的案例理论上已经非常的"安全"了.因为就算***知道了你的Hash值,也没法逆运算出用户的密码.但情况并不乐观.我们眼见为实!
以MD5为例:在终端上演示一下(比如我的密码是123456)
浅谈Hash
MD5的结果是: e10adc3949ba59abbe56e057f20f883e
接下来隆重介绍一个网站//www.cmd5.com/
我们只需要将Hash值进行反向的查询.
浅谈Hash
查询结果图
可能你会问,Hash既然不能反算为何这个网站能够查询出来?仔细看下网站的介绍不难发现:其实它是一个巨大的数据库.利用明文和Hash的数据记录,进行反向查询.
浅谈Hash

网站介绍
当然,提供哈希反向查询服务的不仅仅只有这个网站,还有很多盈利性的公司提供有偿服务.
所以如果我们单纯的直接使用Hash算法,用户的密码安全性会非常低.
早期的解决方案加盐
浅谈Hash
这种方式,对于反向查询来说就比较困难了.安全系数也相对较高.
HMAC(Hash-based Message Authentication Code)
对于简单的使用盐的方式还是会有安全隐患,因为如果盐被泄露了.那么整个项目将陷入被动.因为这种方式将盐写死在程序里面了,要想今后换掉是非常难的.
那么接下来介绍一种加密方案HMAC.它使用一个密钥,并且做了两次散列!
注意:在开发过程中,这个密钥KEY是从服务器获取的.并且一个用户对应一个KEY

废话不多说,直接上代码
浅谈Hash
对于这种加密方案.就可以很好的?;び没У囊叫畔?因为就算泄露了KEY.这个KEY也只是一个用户的.不会污染整个项目.
如果拿到这个KEY,然后想反查询出用户的明文密码.这个成本,除非这是马云的账户.
所谓安全,无法做到绝对安全.他们灰产有句话:只要钱到位,没有什么不可能!我们要做到的就是相对安全.让破解的成本大于破解的利润.

登录加密补充
今天写得开心.所以再分享一点干货.
刚才我们一直停留子在***想要拿到用户的真实密码.那么如果***换了一个思路.大哥就是想要拿到用户的登录权限呢?
那么我们这种加密.无论你怎么玩.妥妥的都是给服务器一个Hash串进行验证啊,也就是我只需要拿到你的Hash值.那么我只要模拟你客户端进行登录是再简单不过了.
当然,这样的防护手段有很多.我介绍一种有效的防护方式.有更好的建议可以留言写在下面,一起交流,向您学习.

注册的过程
注册的过程还是一样.服务器保存的还是一串HMAC加密之后的HASH值.进行校验.但是登录时的验证做点修改.

客户端br/>通过服务器的KEY进行HMAC加密,得到HMAC的Hash串
将得到的Hash串拼接一个时间字符串@'201807102248'注意只到分(当然根据你的情况可以到秒)
然后将这个拼接完成的串,再次Hash.将这个结果发给服务器验证

服务端
br/>服务器保存了hmac的Hash串,以同样的算法,拼接服务器的时间,进行运算,然后校验.比如时间是59秒99发送的请求.服务器正好跳过一个分钟.过程如下:
(服务器的Hash串[email protected]"201807102249")Hash.这次不通过再来一次
(服务器的Hash串[email protected]"201807102248")Hash.和上一分钟对比,一次通过算成功
这样的好处,可以做到每登录发送给服务器的Hash值是不一样的.***不能通过保存Hash值模拟登录.
浅谈Hash
版权&文件识别
当然Hash的作用除了用于登录密码加密以外.还有版权的运用.
比如如何识别一段视频或者一段音频,这种数字文件是正版的.这个时候,我们使用肉眼是没法判断的.因为翻录的视频和音频文件几乎看不出来.但是,文件的二进制不一样,它的Hash值是不会欺骗群众的.所以类似YouTube这样的网站,在你上传视频的时候,它会将文件的Hash值保存.当其他的网站上传这个视频,那么看是否是正版,就是对比文件的Hash值.
既然可以识别文件.那么还有一个非常广泛运用的就是像百度云这样的云端服务.举个例子:
很多小伙伴保留的视频,经常被"和谐".有的人将视频的名称全部改为葫芦兄弟,黑猫警长但是还是被和谐了.
百度识别你的视频文件,和你的文件名称,以及文件后缀(有人改成.txt)没有半毛钱关系.它只会看这个文件的Hash值.那么如果想要逃脱.你唯一的出路就是改变文件原有的二进制.(翻录\视频格式转换).
那么最简单的,就是一个压缩包,全部搞定.(我是很严肃的在讨论技术... ...的运用场景)

转载自://blog.51cto.com/14039500/2313679

招聘 不方便扫码就复制添加关注:程序员招聘谷,微信号:jobs1024



iOS应用架构谈 开篇
之前安居客iOSapp的第二版架构大部分内容是我做的,期间有总结了一些经验。在将近一年之后,前同事zzz在微信朋友圈上发了一个问题:假如问你一个iOSorAndroidapp的架构,你会从哪些方面来说呢?
浅谈栈和队列的有关面试题
 最近本博主在复习数据结构,不不不?。?!应该是预习,因为把上学期学的基本上全都还给脑四了,之前写过有关实现库里边栈和队列的文章,经过这几天的坚持不懈的努力,硬是啃了几道有关栈和队列的面试频率较高的题,今天就和大家分享一下下啦?。ㄒ唬┦迪忠桓稣唤峁故沟胮oppushmin(获得栈中最小元素)操作的时间复杂度为O(1)思路:可以用两个栈来实现,一个栈用来push,pop,一个栈用来保
经验谈系列 我们应该怎么给父母配电脑
经验谈系列我们应该怎么给父母配电脑.以下只是记录笔者这半年外地大学的一个插曲作为一个IT宅,不可避免的要面对一个人生大事--上大学在这期间可能我们的父母并不如我们一般喜欢电脑。QAQ而在干干净净上大学之前我们需要干一件漂亮事情就是给父母留一台电脑。首先需要明白需求目前的时代可能我们用的最多的是手机而不是电脑不管是android还是iphone可能我们的父母更需要的是方便快捷的 手机&
struct 使用浅谈。
一、定义:结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构。声明一个结构体类型的形式是:      structstudent //声明一个结构体类型student      {    &
结合一个nagios告警浅谈solaris的SVM
现在的90后运维,大多懂linux的lvm,估计很少有人懂solaris的svm了。在N年前,在linuxx86还没有雄起的时候,其实aix/hp/sun三大主机巨头都有自己的一套存储管理机制和软件,其中sun的就是svm。除了各自专门的存储管理软件,还有第三方的商业存储管理软件,比如veritas,也可以用来管理solaris的存储,不过这些商业软件,在如今开源产品的冲击下,日子是远不如以前风
浅谈 nagios监控配置
该文档只针对于配置  打乱了commands.cfgtemplates.cfgcontacts.cfglocalhost.cfg timeperiods.cfg resource.cfg讲解在讲配置之前最重要的一个命令:   nagios目录/bin/nagios-vnagios.cfg (这是调
浅谈iOS中几个常用协议 NSCopying/NSMutableCopying
下面小编就为大家分享一篇浅谈iOS中几个常用协议 NSCopying/NSMutableCopying,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
浅谈iOS 对于block的一点理解
本篇文章主要介绍了iOS 对于block的一点理解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
浅谈WKWebView 在64位设备上的白屏问题
下面小编就为大家带来一篇浅谈WKWebView 在64位设备上的白屏问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
浅谈iOS应用中的相关正则及验证
下面小编就为大家带来一篇浅谈iOS应用中的相关正则及验证。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧