生日攻击理解

article/2025/4/22 12:29:33

1.什么是哈希碰撞?产生哈希碰撞的原因是什么?如何避免?

      两个不同的输入,经过哈希算法后,得到了同样的哈希值,就叫做哈希碰撞。由于通常的哈希算法中,哈希值的空间远小于输入的空间,这就意味着信息熵有丢失。一个空间较大的集合(输入)通过哈希算法映射到一个空间较小的集合(哈希值),必然会造成多个输入映射到一个哈希值上,这就是所谓的哈希碰撞。这就是说当输入的可能性被完全枚举时,一定会产生哈希碰撞。

    避免哈希碰撞的主要手段是,根据输入集合的数量级,选取输出合适哈希值长度的哈希函数,将哈希碰撞的概率降为“几乎不可能”。

2.什么是生日悖论?及计算过程。

    生日悖论:如果一个房间里有23个或23个以上的人,那么至少有两个人的生日相同的概率要大于50%。对于60人以上,这种概率要大于99%。70人为99%,严格意义上,这并不是一个悖论,称之为悖论是由于跟人们的常识相悖。

    所以所有人生日都不相同的概率是:

 

                         


    那么,n个人中有至少两个人生日相同的概率就是:

 

                          


     所以当n=23的时候,概率为0.507;当n=100的时候,概率为0.999999692751072。在哈希算法中,将人数对应为输入样本数量,将一年365天对应为哈希值的位数。

3.生日攻击

    所以由生日悖论结论可以看出来:产生哈希冲突所需的输入样本数量,远低于所有可能哈希值的全集数量。

    这就引出了生日攻击。生日攻击不是真实的一个攻击,而是一种概率的结果。生日攻击是以概率论中的生日问题为数据基础的一种密码学攻击方法。使用一个64位的哈希函数,大约有 1.8 × 10^19 个不同的哈希值。如果产生每个哈希值的可能性是相同的,那么只需大约 5.1 x 10^9 次(51亿次)暴力尝试就可以得到一次哈希碰撞。51亿次叫做birthday bound (生日边界)。

4.生日攻击的结论

   由于是属于暴力穷举的一种,所以它能对任何类型的散列函数进行攻击。

   根据生日悖论(公式推导略),n位的哈希值预计产生一次碰撞需要2^(n/2)次尝试。



 


http://chatgpt.dhexx.cn/article/myTmPGdi.shtml

相关文章

哈希碰撞与生日相同概率

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

密码学系列之:生日攻击

简介 生日攻击其实是一个概率论的问题,也就是说一个看起来很难发生的事情,事实上它发生的概率却很大。这种主观上和事实上的概率差距,让随机攻击成功的几率变的更高,这样的攻击就叫做生日攻击。 生日问题的由来 生日问题也叫做…

linux 清空redis缓存

1,进入目录redis下src目录。 #cd redis-2.8.17/src 2,执行redis-cli文件 #./redis-cli 3,执行命令:flushall,出现OK代表执行成功 #flushall 4,退出命令exit #exit 实例:

【redis】linux服务器清空redis

redis-cli 进入redis命令行 flushall 清除所有 如果报出“NOAUTH Authentication required.”错误,那么需要用密码授权 使用 auth [密码] 就可以继续操作了

redis数据清空脚本

redis服务经常因服务器内存不够用而自动死掉。需要经常连接进去做数据清理后启动服务。 所以写了个脚本每天清理一遍。 echo "flushall" | redis-cli -p 7000 -a password echo "flushall" | redis-cli -p 7001 -a password echo "flushall" |…

docker部署python程序清空redis数据

这里还是要推荐下小编的Python学习群: 823137423,不管你是小白还是大牛,小编我都欢迎 ,不定期分享干货,包括小编自己整理的一份2019年最新的Python资料和0基础入门教程视频,欢迎初学和进阶中的小伙伴。在不忙的时间我会给大家解惑。 docker部署python程序清空redis数据 线…

Windows 清空Redis数据

1.redis安装目录下输入cmd 2.redis-cli -p 端口号 3.flushdb 清除当前数据库缓存 4.flushall 清除整个redis所有缓存

Laravel 清空 Redis 队列

先说问题,我的网站搜索使用的 Laravel Scout Algolia 因为 Algolia 是收费的,免费版有容量限制。免费版应该是如下的限制: 一旦你的 计划超出配额,那么 Laravel 队列就会一直失败。失败他会重试导致 ,队列一直累加、…

教你Redis 如何清空所有数据

这篇文章主要介绍了Redis 如何清空所有数据,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教 Redis 清空所有数据步骤总结 1、打开cmd 命令窗口,切换至Redis 安装目录下的bin文件夹 2、在cmd 命…

lnx的导数证明

https://zhidao.baidu.com/question/524121644.html

MT【80】单调性求函数表达式

提示:$f(f(f(x)-lnx)-ln(f(x)-lnx))1ef(f(x)-lnx),\because f(x)$单调.得: $f(f(x)-lnx)-ln(f(x)-lnx)f(x)-lnx$,可以解出$f(x)ln(x)e$ 转载于:https://www.cnblogs.com/mathstudy/p/7630632.html

C语言:综合题,按x的值计算sinx,cosx,ex,lnx

0<x<10,输出sinx 10<x<20,输出cosx 20<x<30,输出ex 30<x<40,输出lnx x<0或x>40,输出zsdy #include<stdio.h> #include<math.h> int main() {double x;printf("input x");scanf("%lf",&x);if(x>0&am…

怎么用计算机算lnx,lnx等于多少怎么算

lnxloge^x。ln是一个算符&#xff0c;它的意思是求自然对数&#xff0c;即以e为底的对数。e是一个常数&#xff0c;约等于2.71828183&#xff0c;lnx可以理解为ln(x)&#xff0c;即以e为底x的对数&#xff0c;所以也就是求e的多少次方等于x。 以常数e为底数的对数叫做自然对数记…

APP专项测试——弱网测试

1.弱网测试场景 弱网测试思路可以从以上场景考虑。像模拟3G网络&#xff0c;3G、4G、5G、WiFi相互切换&#xff0c;是网络测试的基本场景&#xff1b;弱网或者无网时APP的反应时长、页面呈现、超时时间和超时文案是关乎用户体验的基本场景 2.弱网测试工具 &#xff08;1&…

Android Studio创建安卓虚拟机并测试app

首先&#xff0c;右上角点击AVD Manager。 这个界面就会显示我们已有的安卓虚拟机&#xff0c;要创建新的虚拟机&#xff0c;点击Create Virtual Device。进入下一个界面选择屏幕样式&#xff1a; 接下来是Image选择&#xff0c;为了让下载的东西小一点&#xff0c;我们选择了…

APP兼容测试

兼容性测试一般考虑&#xff1a;手机型号、操作系统、屏幕分辨率、网络、应用兼容、数据格式 一。关于原生系统的兼容&#xff1a; 1. 手机型号&#xff1a;覆盖市场主流机型&#xff08;Android&#xff1a;华为、小米、OPPO、华为.. IOS主流机型&#xff09;兼容性测试本质…

APP性能测试之monkey

APP性能测试之monkey 1 monkey 是做什么的 monkey 是 Android 中的一个命令行工具&#xff0c;由 java 编写&#xff0c;可以运行在模拟器里或实 际设备中。 它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等)&#xff0c;实现 对 APP 进行压力测试。 …