首页 > 资讯 > > 正文

哈希算法是什么,它有什么作用 全球快播

来源:哔哩哔哩 2023-01-26 03:07:53

本文的目的是为了让没什么计算机基础的人也能理解哈希算法的作用,如果觉得有看不懂或写得不对/不好的地方欢迎联系本人,我会修改到尽量让0基础的人也能看懂

什么是哈希算法

Hash算法有很多的译名,一般被翻译成哈希、散列、杂凑等(本文就称其为哈希),有时也被叫做信息摘要啥的,本意是指“把...弄糟,搞砸”它的作用也和它的名字类似,给定一个任意长度输入,它能根据输入计算出一个长度确定的值以一种哈希算法md5举例,如果你输入的内容是114514,那得到的结果(哈希值)就是c4d038b4bed09fdb1471ef51ec3a32cd如果只是这样的话那这个算法也没啥用,但哈希算法还有几个特性:1. 对于所有计算出来的哈希值,只要两个哈希值不同,那原输入就一定不同2. 哈希算法具有雪崩效应,原输入哪怕只改变一点点,那计算出的哈希值都会完全不同3. 无法直接从算出来的哈希值反推出原先的输入(因为计算的时候会丢失很多信息)举个例子,以下是几个不同的数的md5值

发现没有?不管你是改一位数、增加一位数还是删除一位数,最后得到的md5值都完全不同如果不相信的话可以找个在线计算md5(别的哈希算法也行)的网站(如https://ctfever.uniiem.com/tools/message-digest)试试正是因为这些特性,哈希算法才能被用于各种用途


(相关资料图)

哈希算法的各种用途

由于以上的特性,哈希算法可以用来验证原数据是否是某段数据,就像你识别一个人可以观察TA的指纹,而不需要再观测别的信息。因此,哈希算法有着各种各样的用途1. 文件完整性校验上文有提到哈希算法对于输入的数值非常敏感,哪怕你只改了一个比特,那得到的结果都会完全不同因此,假设我们有个网站提供文件A的下载,只要我们把文件A的哈希值计算出来并放在下载按钮旁边,那用户在拿到文件后只需要在本地计算一遍文件的哈希值再和网站上放的哈希值对比,就可以知道下载下来的问题是否有被损坏注:哈希算法只能保证文件未被修改,不能保证提供者是可信的。如果真想伪造的话,提供者可以连文件的哈希值也一起伪造这种校验也被各种程序使用,假如你有个程序能自动下载并安装某模块,为了防止下载下来的模块有问题导致运行出错,可以让服务器提供一下这个模块的哈希值。然后程序就能自动计算下载下来的模块的哈希值,并和服务器提供的哈希值进行比较,如果不一致就表明下载下来的文件有问题。这时候程序就能选择重新下载这个模块,而不是直接用这个模块然后运行时疯狂报错,还打死都找不到是哪出错了一些网盘之类的文件扫描、文件秒传也是用哈希算法实现的。秒传的原理就是在上传文件前,客户端先把文件的哈希值计算出来并告诉服务器,服务器就去查找是否有存储过对应哈希值的文件,有的话就直接告诉客户端这文件已经存储过了,然后客户端就直接告诉用户文件上传完成,没有的话再去真正地上传文件。

违规文件扫描也是这样的,服务器存储违规文件的哈希值,这样客户端上传文件的时候只要文件的哈希值被识别为违规,那上传就会直接被拒绝。这也是为什么一些聊天软件的图片屏蔽也只要改原图的一个像素都可以轻易绕过,因为哈希算法对输入非常敏感,改一个字节算出的哈希值都完全不同。只用哈希算法进行的文件校验都可以通过修改文件内容(哪怕只改一个字)的方法直接绕过2. 安全存储用户的密码假设有个网站要存用户的用户名和密码到数据库里,那可以先看看以下几个方案a. 明文存储这是最容易想到的思路,但同时这也是最不安全的存储方式,将用户输入的密码原样存进数据库里。为什么这么做不安全?万一网站后台有内鬼,或者因为别的什么原因数据库泄露了,那就直接寄了,别人可以直接用数据库里存的密码登录你网站的任何用户最关键的是这样不仅会导致你网站的数据全都寄了,而且还会危害使用你网站的所有用户。很多用户喜欢在所有网站都用同一套(或类似的)用户名和密码,你泄露了用户在A网站注册用的用户名和密码,那攻击者拿到后可以拿它们去B、C、D、E、F网站尝试,就算这么做的成功率不是很高,但只要尝试的数量够多,总会有人中招的,因此作为用户也千万别全网都用同一套用户名和密码b. 对密码进行对称加密后存储这样做虽说会比明文存储安全(废话),但也是有挺高的风险的对称加密基本就是指用一个密码加密数据后,你也只能用这个密码来解密数据,就像你在压缩文件的时候给压缩包添加一个密码,这样解压的时候也必须输入这个密码才行。但别忘了一件事,进行对称加密所需的密码你肯定也是要找个地方存储的,况且每次验证用户登录你也必须要使用这个密码,因此当数据库泄露后,如果这个密码也被一起泄露了,那一样是白给c. 存储密码的哈希值还记得上文所说的哈希算法的特性吗?哈希算法是不可逆的,当你得到一个哈希值的时候,你是没法反推出它的原始值的。这样看上去用密码的哈希值来验证密码就刚好了。我们不存储原始的密码,而是直接存储密码的哈希值。之后验证密码的时候我们也不拿原始密码去对比,而是先计算用户输入的密码的哈希值,再去数据库里对比存储的密码哈希值这样,我们在不知道原始密码的情况下依然可以验证用户输入的密码,同时由于哈希算法的特性,就算有人得到了数据库里存储的哈希值,他也没法通过哈希值逆推出原先的密码

所以为什么现在的app和网站在你忘记密码的时候都没法告诉你原始密码,只能让你重新设置?因为服务器自己都不知道你原始密码到底是什么,只有密码的哈希值,那就只能让你去重新设置了这样做既保证了登录验证功能能正常实现,同时也能保证就算数据泄露用户的密码也不会跟着被泄露,看上去这是个完美的解决方案。是吗?d. 存储密码的加盐哈希值虽然哈希算法是不可逆的,但有个攻击方法叫彩虹表我虽然知道114514的md5值是c4d038b4bed09fdb1471ef51ec3a32cd,但没法用c4d038b4bed09fdb1471ef51ec3a32cd反推出114514,那怎么办?简单,那就自己搞个数据库,在里面存入数据c4d038b4bed09fdb1471ef51ec3a32cd=> 114514。既然没法逆推出原始数据,那就生成一堆常见的数据,并把它们的哈希值算出来,再存进我自己这个数据库里,这样下次遇到对应的哈希值就去查自己的数据库就好了。当然,你不可能穷举所有的排列组合并把它们的哈希值都存储起来,因此这个方法也只能破解常见密码的哈希值。将这种破解方法通过一些方法优化后你就得到了彩虹表。那你总不能说我数据库泄露后只能保证密码复杂的人的密码才不会破解吧 (当然你要觉得用简单密码的人都是傻逼,活该密码被破解的话当我没说)因此我们可以使用加盐哈希来存储密码什么是加盐哈希?简单来说就是我们在计算哈希值之前,先对原先的数据进行处理,加上一点“盐”,再去计算加盐后的数据的哈希值举个例子,p@ssword是个常见密码,它的md5值是90f2c9c53f66540e67349e0ab83d8cd0,你可以在一些md5破解网站(如https://www.cmd5.com/)(这些网站的原理就是刚刚说的彩虹表)试试看这段md5值,都能直接查询出来但如果我给p@ssword后面加上TURaWg==再计算md5值呢?那p@sswordTURaWg==的md5值就是17e7c834da0551e8872d77f741b58bbc,和刚刚的值完全不同(别忘了上文说的哈希算法具有雪崩效应,差一个字结果都完全不同),你再去这些破解网站就查不出来了。这样就算泄露了密码哈希值和盐的值,攻击者也必须得重新跑出一个彩虹表才有可能得知用户的密码是否是某些常见密码,要付出极高的时间成本。但假如我给每个用户都加上随机的的盐呢?那攻击者就真要疯了,要是还想暴力破解的话得针对每个用户都去生成个单独的彩虹表,时间成本高到根本无法接受(当然这样依然是有可能跑出简单的密码的,所以不要使用常见或简单的密码)所以,存储用户密码的时候可以这么设计,往数据库里存用户id + 密码的加盐哈希值 + 随机生成的盐,验证用户登录的时候就先读取盐,再把用户输入的密码加上盐之后计算哈希值,最后再和数据库里的加盐哈希值进行比较,这样可以有效避免密码被暴力破解。为了尽量防止密码被暴力破解,还可以换用计算时间所需更久的哈希算法思考题:盐的内容对暴力破解的难度有影响吗?盐的长度呢?如果我不在密码后面加盐,而是在密码的前面加盐呢?如果我再换别的加盐方式,比如每隔一个字把盐的一个字符穿插在密码中间呢?3. 数字签名技术前面说过哈希算法可以用来整文件完整性校验,但不能确保文件的提供者是可信的。不过配合上非对称加密就可以做到这一点,这种技术被称作数字签名。有关数字签名的内容我不打算在这篇文章介绍,涉及的内容比较多,感兴趣的话可以看看其他人的讲解

【软件科普】如何保证发出去的微信和QQ消息不被篡改?详解RSA加密算法

哈希碰撞

哈希算法也并不是无敌的,也存在着一些漏洞正如你可以通过假指纹的方式骗过指纹验证,哈希算法也有办法进行碰撞(即用不同的输入得到相同的哈希值)以md5为例,它输出的结果是个32位的16进制数,那就一共有 16^32^ = 340282366920938463463374607431768211456 种可能的排列组合。别的哈希算法的组合可能更多,但本质还是一样的。虽然这个数非常大,但跟哈希算法可能遇到的各种输入,这个数是远远不够的。计算哈希值的时候都会丢失很多的信息

由于鸽笼原理可知,当我们把10个鸽子放进5个笼子的时候,必定有至少一个笼子里有一只以上的鸽子。因此,当数据的排列组合够多的时候,必然也会产生哈希碰撞,即两个不一样的数据能计算出相同的哈希值。举个最简单的例子,md5的输出是32位的16进制数,那你给他输入100位的16进制数的所有排列组合,它一定会生成很多一样的哈希值其实可以反过来想,如果哈希值不会碰撞,那就表明一个哈希值能对应一个唯一的原数据,那岂不是说我可以直接用个md5值来代替一个1G的电影,然后存储的时候直接存储那个md5,要播放的时候直接根据这个md5计算出电影的原始数据然后直接播放,这样的话你还买硬盘干什么(哈希碰撞并不是危言耸听,像md5就被爆出了能快速构造出两个md5相同的不同文件的漏洞结合上文提到的哈希算法的用途,那就有以下的攻击手段比如文件下载的时候,正常的文件A哈希值是a,但如果攻击者能想办法构造出一个病毒文件B,并让它的哈希值也为a,那就可以欺骗过简单的文件校验,让别人或别的程序以为A和B是同一个文件。因此,在检验哈希值的时候还可以顺便校验下文件的大小,这样可以大幅降低被假的文件欺骗的概率不过虽然存在哈希碰撞这种攻击手段,但这并不是说哈希算法就一无是处,就能随便生成相同的哈希值了。虽然理论上是一定可以生成哈希值相同的数据的,但实际上要找到这样的数据是极其困难的,哪怕是已经被证明有缺陷的md5也只能生成两个哈希值相同的文件,无法做到根据指定的哈希值逆推出原文件的内容。而且现在有不少哈希类算法至今仍未被找出任何碰撞案例,例如sha-256、sha-384和sha-512等。即使是已被证明为不安全的哈希算法,我们仍然可以在对安全性没太高要求的地方继续使用它们进行简单的验证。但在安全性要求高的地方,还是得用更安全的哈希算法来进行各种操作

本文修改自我以前写的科普,以后我也可能会不定期更新一些其它内容的科普

我会说我是因为觉得自己把这文章只放自己网站上根本没人看才把这篇文章偷过来的吗(

x
推荐阅读

哈希算法是什么,它有什么作用 全球快播

2023-01-26 03:07:53

中二病是什么意思用英语怎么说_中二病是什么意思_短讯

2023-01-25 18:01:47

今年春节,你开新能源车回家了吗? 焦点快播

2023-01-25 11:48:21

环球观察:清明节的来历300字_关于清明节的来历简说?

2023-01-25 03:50:28

醉酒后留宿好友家险些闹乌龙,警方提示新年聚会饮酒要适度 视点

2023-01-24 19:01:54

湛江市气象台发布森林火险黄色预警【III级/较重】【2023-01-24】

2023-01-24 12:39:39

今日讯!三门县气象台发布大风黄色预警【Ⅲ级/较重】【2023-01-24】

2023-01-24 06:09:18

订婚戒指戴哪个手指_订婚戒指和结婚戒指一样吗

2023-01-23 19:57:43

泰山队闷声发大财,国安按兵不动,大连人留林良铭,申花只差一关|今日观点

2023-01-23 13:48:58

朋克是什么意思_朋克的特点|每日快看

2023-01-23 07:56:16
相关新闻

哈希算法是什么,它有什么作用 全球快播

2023-01-26 03:07:53

中二病是什么意思用英语怎么说_中二病是什么意思_短讯

2023-01-25 18:01:47

今年春节,你开新能源车回家了吗? 焦点快播

2023-01-25 11:48:21

环球观察:清明节的来历300字_关于清明节的来历简说?

2023-01-25 03:50:28

醉酒后留宿好友家险些闹乌龙,警方提示新年聚会饮酒要适度 视点

2023-01-24 19:01:54

湛江市气象台发布森林火险黄色预警【III级/较重】【2023-01-24】

2023-01-24 12:39:39

今日讯!三门县气象台发布大风黄色预警【Ⅲ级/较重】【2023-01-24】

2023-01-24 06:09:18

订婚戒指戴哪个手指_订婚戒指和结婚戒指一样吗

2023-01-23 19:57:43

泰山队闷声发大财,国安按兵不动,大连人留林良铭,申花只差一关|今日观点

2023-01-23 13:48:58

朋克是什么意思_朋克的特点|每日快看

2023-01-23 07:56:16

全球快看:昵称文艺男生简短好听 男生qq昵称简短好听

2023-01-22 20:34:17

给春晚语言类节目排名:沈腾马丽无敌,王宝强输了,于震被骂惨 新动态

2023-01-22 14:50:52

如何应对报纸记者敲诈

2023-01-22 07:50:24

「明日天气预报」漯河2023年01月22日天气预报,晴转阴,东北风转北风<3级 当前焦点

2023-01-21 19:48:00

灵隐景区实施预约停车,春节假期杭州西湖景区出行攻略来了_世界今头条

2023-01-21 13:48:48

拥有凤凰乐器意味着什么?

2023-01-21 08:03:31

每日资讯:世界经济论坛呼吁携手应对多重挑战

2023-01-20 22:10:14

[快讯]ST鹏博士公布年度业绩预告

2023-01-20 17:46:59

统编版九年级上册语文教学计划_语文版九年级上册语文教学计划

2023-01-20 14:44:31

蒋氏宗祠-关于蒋氏宗祠部分内容简述_全球时讯

2023-01-20 11:31:54

合伙企业名称可以叫公司吗_合伙企业名称参考大全|视讯

2023-01-20 08:11:31

情绪的句子_情绪的种类|天天动态

2023-01-20 00:17:59

世界热文:证监会核准设立渣打证券(中国)有限公司

2023-01-19 18:47:15

【环球聚看点】二十八贴花花 剪纸背后的民俗情怀

2023-01-19 15:27:44

全球讯息:文科和理科分别有哪些科目_文科和理科的优势

2023-01-19 11:52:15

村民连续19年领分红

2023-01-19 09:16:03

开张了!_每日讯息

2023-01-19 01:08:43

横店东磁:子公司拟投资年产12GW新型高效组件项目 项目总投资约35.5亿元

2023-01-18 18:38:40

两市横盘缩量调整 互联网获主力资金青睐!

2023-01-18 15:56:45

重点聚焦!2023年郑州国企河南国鑫鼎矿业有限公司招聘公告

2023-01-18 12:27:36

要交给谁的交强险才赔

2023-01-18 09:21:55

专项检查不留死角 排除隐患确保安全 环球观察

2023-01-18 02:35:38

曝苹果iPhone15系列潜望镜头将由LGInnotek和家化电子供应 动态焦点

2023-01-17 19:06:21

海德股份开年涨超20% 战略经营效益显著激活市场信心

2023-01-17 16:09:34

武汉军山街川江池社区开展爱心驿站春节温暖慰问活动

2023-01-17 12:52:41

摩根士丹利华鑫基金市场洞察:近期市场对经济修复的信心持续增强

2023-01-17 09:58:43

热点聚焦:单向阀符号大全图解_单向阀符号

2023-01-17 01:55:13

威马汽车宣布涨价1.5万至2.5万元,新能源车国内市场竞争已白热化

2023-01-16 17:48:30

私募合伙协议纠纷找律师一般怎么收费|环球短讯

2023-01-16 13:43:52

环球速看:突传噩耗!刘晓庆深夜官宣悲痛消息,管虎101岁父亲管宗祥去世

2023-01-16 09:40:54

观察:雨雪天气驾车要注意哪些方面?交警提醒

2023-01-15 21:08:58

原创 | 一文读懂机器学习中的shapley值方法

2023-01-15 10:07:01

靖国神社同款?深圳春节活动大挂日本白灯笼过年竟走丧葬风

2023-01-14 19:20:37

办“小案” 暖民心 陕西省检察机关发挥民事检察职能为民办实事_全球百事通

2023-01-14 08:52:03

新型冠状病毒感染重症病例诊疗方案(试行第四版)发布 视讯

2023-01-13 21:05:39

快看点丨3.5元的“钟薛不高”,你会买吗?

2023-01-13 16:21:39

【环球播资讯】豆瓣9.5分的《中国奇谭》是怎样诞生的

2023-01-13 12:04:33

让乡村儿童享受更有质量的教育-当前热闻

2023-01-13 08:53:29

【时快讯】同兴环保:公司正在开展钠离子电池正极材料及电池产品的中试放大实验

2023-01-12 22:27:30

筑基求本,科创未来|力码科技荣膺德勤"2022中国明日之星”_今日看点

2023-01-12 16:50:41

天天视讯!我是110丨人称“闪电侠”,带给群众无限安全感

2023-01-12 13:57:48

2023领导者展望|路易达孚集团北亚区首席执行官陈嘉渊:满足消费者多元需求,向价值链下游延伸

2023-01-12 10:18:04

网宿科技获中国信通院“云原生技术创新奖”

2023-01-12 09:18:15

宋威龙拾金不昧发失物招领,却被虞书欣无情嘲笑,原来还有这操作|世界热资讯

2023-01-12 03:23:35

山东省科技馆新馆一天可以预约多少人?-天天百事通

2023-01-11 18:57:41

创源股份(300703)1月11日主力资金净买入334.78万元

2023-01-11 15:21:53

今亮点!有两颗动力“心脏”的智能船舶来了

2023-01-11 10:06:57

海绵城市板块1月10日涨0.08%,纳川股份领涨,主力资金净流出3031.75万元 焦点播报

2023-01-11 04:11:58

启明信息2022年预计净利6197万-8181万同比增长53%-102%不断提升产品和服务能力

2023-01-10 19:39:43

天天播报:佛山南海经济开发区人民医院新冠康复门诊就诊指引(附预约入口)

2023-01-10 16:51:31

环球速讯:民法典对质权的保护有什么规定?

2023-01-10 14:37:06

捷信超贷网贷逾期39年征信有什么影响

2023-01-10 14:15:11

1月9日基金净值:南方中证申万有色金属ETF最新净值1.1333,涨2.82% 全球即时

2023-01-10 12:44:43

有钱花借款逾期21年还不起会上征信吗 每日关注

2023-01-10 12:18:49

世界即时看!祛疫添温情,武汉市武昌医院免费发放“爱心中药茶包”

2023-01-10 11:36:33

每日消息!新易贷微贷款借款逾期七个月征信会怎么样

2023-01-10 11:09:26

2022年12月全球航天发射活动统计分析

2023-01-09 21:10:09

新疆塔县边民互市贸易区赴巴考察达成多项合作协议

2023-01-09 16:02:03

热门:山药怎么长的 山药是怎么生长的

2023-01-09 12:19:49

全球快消息!"中国好人"苗星新"大爱无疆":淋过雨更想为别人撑伞

2023-01-09 09:18:50

硅业分会:本周硅片价格继续下跌 M6、G12单晶硅片周环比跌超20%

2023-01-07 00:53:55

伏天需要开窗户么?

2023-01-06 22:10:53

面试时,最可怕的就是背调?

2023-01-06 19:55:35

【聚看点】如懿和甄嬛都是流潋紫笔下的女主角,他们有什么不同之处?

2023-01-06 17:28:30

民航局优化调整防控策略 取消客座率限制等管控措施|天天简讯

2023-01-06 16:34:58

快讯:特斯拉公布大陆全新售价: Model 3/Y迎来史上最低价

2023-01-06 16:01:28

手机微信红包封面怎么设置?附详细教程|世界即时看

2023-01-06 13:39:01

旁白歌词 旁白歌词简单介绍 全球最资讯

2023-01-06 11:52:05

她出道22年来拿下一首美女演员,46岁不恋爱也不结婚-全球即时

2023-01-05 14:26:20

北辰实业(601588)1月4日主力资金净买入67.02万元|全球今日讯

2023-01-05 12:40:50

《墨白》五大男神,毕雯珺魅力无双,而这四个男配角也都很帅

2023-01-05 05:44:21

埃尔登法环这款游戏怎么样,值得入手吗? 全球微动态

2023-01-04 17:52:30

中邮钱包贷款逾期多久会上征信?|新要闻

2023-01-04 15:31:41

明日方舟:斗士分支确实是由山哥撑起一片天|快资讯

2023-01-04 11:32:25

全球热点评!海新能科(300072)1月3日主力资金净卖出1802.07万元

2023-01-04 09:06:12

曝Z姓老艺术家翻车!包养L姓女星,和小四私生女已二十多岁 天天视点

2023-01-04 01:36:54

每日资讯:怎么识别翡翠的好坏?有6个方法

2023-01-03 19:29:38

如何区分风寒、风热?一直不退烧怎么办?北京中医医院院长解答

2023-01-03 16:20:10

世界观焦点:凯瑞德1月3日快速回调

2023-01-03 13:08:52

深圳钜盛华股份公司金融债权以底价17.28亿元成交-视讯

2023-01-03 10:59:02

元旦假期长沙文旅推出系列主题活动,邀您一起欢庆元旦

2023-01-03 03:05:57

环球通讯!2023年元旦档票房破2亿

2023-01-02 23:11:21

今日热闻!港媒:中泰专家携手破解科学前沿难题

2023-01-02 21:39:38

首辆“澳车北上”元旦零点顺利入境广东 热推荐

2023-01-02 08:07:29

5399 元:苹果 Apple Watch Ultra 京东免息狂促(上市价 6299 元)

2023-01-01 15:33:26

废废丨LME铜价下跌!

2022-12-31 23:47:14

【天天新要闻】祝贺!“00后”孙颖莎国际乒联年终世界排名第一

2022-12-31 07:42:10

中兵红箭(000519.SZ):聘任赵德良为财务总监

2022-12-30 19:08:40

深圳能源12月30日快速上涨 世界视点

2022-12-30 16:16:55

深圳瑞捷:公司在海南地区三亚、海口等地开展驻场管理、工程评估咨询等业务

2022-12-30 11:18:48