从生日悖论谈哈希碰撞

news/2024/12/23 5:52:18/

1 前言

前几天和一个大佬交流了几个问题,其中一个关于ID生成的问题推展到了哈希冲突和一个与之相关的一个数学趣题生日悖论。

当时对于两个事情的理解不够深刻,周末花时间仔细研究了一下,发现很有趣,于是觉得写一篇文章来和大家分享,今天的主题就是哈希冲突和生日悖论。

通过本文你将了解到以下内容:

  1. 哈希的映射压缩和冲突
  2. 生日悖论
  3. CRC32的冲突分析

2. 哈希映射压缩和冲突

哈希的本质就是数学,简单来说哈希函数实现了各种长度和形式的输入经过公开的哈希函数的运算生成一个固定长度的串,并且这个过程是单向不可逆的,也就是无法从哈希生成的串逆转为最初的输入。

听起来确实很神奇且有用,像一个万能胶囊,在一个小的范围内装了很多不一样的东西,原来有10MB的文件或者1GB的文件经过哈希运算后都会被映射到一个固定长度的串,可见压缩程度之大。

但是又不得不思考另外一个问题:输入是无穷尽的,生成的哈希串长度是固定的,那么必然面临着多个不一样的输入被映射压缩为一个相同的哈希串,就是无限集合映射有限集合导致的哈希碰撞或者叫哈希冲突。

举个栗子:

假如哈希串固定长度是二进制10bit,那么这个10bit空间可容纳的最大数量为2^10=1024,先不说无限输入集合,假如现在有2000个输入,在哈希函数均匀的前提下最少会有2000-1024=976个冲突。

看到这里,肯定有人会说那不用哈希了,但是哈希的压缩映射和不可逆性带来的便利确实有很大的吸引力,所以知难而退并不是个好主意。

我们知道幂次爆炸,所以如果把二进制位数扩展到32bit->


http://www.ppmy.cn/news/897357.html

相关文章

2D游戏中的碰撞检测:圆形与矩形碰撞检测(JavascriptC++版)

2014/02/20 转自Yorhoms Game Box 这几天放寒假了,时间也多了起来,当然又有时间搞搞程序了。哈哈~ 昨天在开发我的塔防游戏时突然发现人物实际攻击范围比规定的范围小,按理说应该是一样大的,但偏偏不是,我被这个问题搞…

哈希碰撞与生日相同概率

一、哈希碰撞是什么? 所谓哈希(hash),就是将不同的输入映射成独一无二的、固定长度的值(又称"哈希值")。它是最常见的软件运算之一。 如果不同的输入得到了同一个哈希值,就发生了&q…

在碰撞中成长 - 北京银行的DevOps实践之路

2018年10/27日,在上海召开的微软年度最大规模的技术盛会—微软2018技术暨生态大会上,北京银行渠道系统负责人&敏捷团队负责人周兵女士和大家一起分享了北京银行的DevOps 实践转型经验,得到了大会听众的热烈评价和共鸣,会后众多…

自适应巡航 自动泊车 车道偏离 碰撞预警 自动驾驶之辅助驾驶技术简介

【转载】智车科技 7月21日 根据工业和信息化部、公安部、交通运输部等三部委共同发布的《智能网联汽车道路测试管理规范(试行)》,自动驾驶汽车是指搭载先进的车载传感器、控制器、执行器等装置,并融合现代通信与网络技术&#xff…

安全科普:密码学之碰撞攻击

转载自FreeBuf.COM] 前言 密码学贯穿于网络信息安全整个过程,在解决信息安全的机密性保护、可鉴别性、完整性保护和信息抗抵赖等方面发挥着极其重要的作用,可以毫不夸张地说“对密码学或密码技术一无所知的人是不可能从技术层面上完全理解信息安全的&am…

urv中保研碰撞测试结果_经撞=安全?中保研碰撞测试结果告诉我们:不一定!|乜都知...

耐撞的车反而不安全? 继上汽大众帕萨特后,中保研又陆续公布了几款新车的碰撞测试报告。包括有长安2020款CS75 PLUS,一汽丰田2019款卡罗拉,上汽荣威2019款RX5 MAX、JEEP大指挥官等车型。 长安2020款CS75 PLUS在C-IASI碰撞测试中,车内乘员安全指数获G评价,耐撞性与维修经济…

JSON数据交互格式

一,json数据类型 J SON: JavaScript 对象表示法( JavaScript Object Notation) 。是一种轻量级的数据交换格式。 它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式, 但是也使用了类似于C语言家族的习惯…

urv中保研碰撞测试结果_深度解读中保研碰撞测试结果,多款热销车竟获“差评”...

天籁是这批测试车型中成绩最好的一款车型,拿到了三项优秀和一项一般的评级。其中车内乘员安全指数、车外新人安全指数和车辆辅助安全指数都拿到了G(优秀)的评级。 获得一般的则是耐撞性与维修经济性指数,由于天籁搭载高度可调节的LED大灯,维修成本较高。不过“M”的评价已经…