我们为了保证消息的完整性,引进了散列函数,那么散列函数会对安全正造成什么影响呢?这是需要好好研究一番的问题。

三个概念:

1.如果y<>x,且h(x)=h(y),则称为碰撞。

2.对于给定的x,要找到一个y满足y<>x,h(x)=h(y),在计算上不可行,称为弱无碰撞。

3.要找到任意一对数,x,y,y<>x,满足h(x)=h(y),在计算上不可行,则称为强无碰撞。(包含弱无碰撞)

假定:一个取整数的随机变量,服从1到n的随机分布,一个含有k个这种变量的集合,至少有一对重复的概率记为P,P大于二分之一,求k的范围

解:对于h(x)=a(a为某个特定的值)的概率为1/n

  对于h(x)<>a(a为某个特定的值)的概率为1-1/n

  k个变量没有重复的概率为: =1(1-1/n) (1-2/n) (1-3/n)… [1-(k-1)/n]

  至少一对重复的概率:P=1 – n!/[(n-k)!nk]

  根据不等式:(1-x) ≤e-x (对于0 ≤ x ≤ 1)

  P>1-e(-(k(k-1)/(2n))

  设E=1-e(-(k(k-1)/(2n))

  k约等于(2nln(1/(1-E))0.5

  当E=0.5,k约等于1.18n0.5

一间屋子的人数必须达到多少人才能使其中两个生日相同的机会达到50%?

k=1.18 * 3650.5=23,仅需要23人

结论:对于长度为m位的散列码,共有2m个可能的散列码,k个输入值的集合中,若要使其中的任意两个输入x和y,有h(x)=h(y)的概率为0.5,只需k=2m/2

碰撞对于基于Hash的数字签名影响

结果是A等于签了一份他根本不知道的文件02。

但是关键是找到一对想要的碰撞,因为文件02必须是有内容,并且是合乎语言语法的,因为就算找到一个文件02与文件01Hash值一样,文件02是无意义的,那么这样做也是毫无意义的!

在实例应用中,基本的Hash函数

可以看到,经常使用的MD5,和SHA的输出长度分别是128和160,对于弱无碰撞性,被破解成功的可能性低于264和280

Hash函数的安全性的更多相关文章

  1. 密码学Hash函数

    定义: Hash函数H将可变长度的数据块M作为输入,产生固定长度的Hash值h = H(M). 称M是h的原像.因为H是多对一的映射,所以对于任意给定的Hash值h,对应有多个原像.如果满足x≠y且H ...

  2. Hash 函数及其重要性

    不时会爆出网站的服务器和数据库被盗取,考虑到这点,就要确保用户一些敏感数据(例如密码)的安全性.今天,我们要学的是 hash 背后的基础知识,以及如何用它来保护你的 web 应用的密码. 申明 密码学 ...

  3. Hash函数及其应用

    本文部分内容摘自网络,参考资料链接会在文后给出,在此感谢原作者的分享. 计算理论中,没有Hash函数的说法,只有单向函数的说法.所谓的单向函数,是一个复杂的定义,大家可以去看计算理论或者密码学方面的数 ...

  4. 使用Hash函数和MAC产生伪随机数

    基于Hash函数的PRNG 流程非常类似于对称密码的CTR工作模式 算法的伪码如下 m = ⌈n/outlen⌉ data = V W = the null String for i = 1 to m ...

  5. 如何综合运用对称加密技术、非对称加密技术(公钥密码体制)和Hash函数 保证信息的保密性、完整性、可用性和不可否认性?

    一.几个问题 在提出问题之前,先创建一个使用场景,发送方(甲方)要给接收方(乙方)发送投标书.大家知道,投标书都包括发送方的标的,这个标的是不能被竞标者知晓,更不能被竞标者修改的.在传输的投标书时,提 ...

  6. Bitset<>用于unordered container时的默认hash函数

    自从c++11起,bitset用于unordered container,将会提供默认的hash函数. 在gcc中,相关代码如下: // DR 1182. /// std::hash speciali ...

  7. 各种字符串Hash函数比较(转)

    常用的字符串Hash函数还有ELFHash,APHash等等,都是十分简单有效的方法.这些函数使用位运算使得每一个字符都对最后的函数值产生影响.另外还有以MD5和SHA1为代表的杂凑函数,这些函数几乎 ...

  8. hash函数为什么要选择对素数求余?

    常用的hash函数是选一个数m取模(余数),这个数在课本中推荐m是素数,但是经常见到选择m=2^n,因为对2^n求余数更快,并认为在key分布均匀的情况下,key%m也是在[0,m-1]区间均匀分布的 ...

  9. 理解php Hash函数,增强密码安全

    1.声明 密码学是一个复杂的话题,我也不是这方面的专家.许多高校和研究机构在这方面都有长期的研究.在这篇文章里,我希望尽量使用简单易懂的方式向你展示一种安全存储Web程序密码的方法. 2.“Hash” ...

随机推荐

  1. IE-首页跳转到 q160的问题解决

    IE首页跳转到 q160的问题解决­ 服了又中找了,IE快捷方式被 www.q160.com劫持­ 该死的这个网站什么也没有做,就是做了一个google搜索的连接.­ ­ 进行了一次搜索­ http: ...

  2. hdoj 2802 F(N)【递推 规律】

    F(N) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  3. webpack文档

    https://github.com/liunian/webpack-doc/blob/master/SUMMARY.md

  4. zepto下动画返回顶部

     function scroll(scrollTo, time) {                var scrollFrom = parseInt(document.body.scrollTop) ...

  5. layer (jQuery弹出层插件)使用

    $(".delete").click(function(){ var work_name = $(this).data('name'); var item_id = $(this) ...

  6. Asp.net Mvc 自定义Session (一),

    大家都知道用系统默认的session 会存在这样的问题 如果用户过多的话 session 会自动消亡,而且不能支持分布式和集群. 这系列博客主要讲解  怎样 解决用户过多的session自动消亡,和分 ...

  7. IOS 10适配https 包含对于一些http的一些兼容配置

    iOS10 从2017年1月1日起苹果提出所有新提交的App默认不允许使用NSAllowsArbitraryLoads来绕过ATS的限制,也就是说强制我们用HTTPS,如果不这样的话提交App可能会被 ...

  8. Map集合中value()方法与keySet()、entrySet()区别

    http://blog.csdn.net/liu826710/article/details/9001254 在Map集合中 values():方法是获取集合中的所有的值----没有键,没有对应关系, ...

  9. Java正则表达式:Pattern类和Matcher类

    一.捕获组的概念 捕获组可以通过从左到右计算其开括号来编号,编号是从1 开始的.例如,在表达式 ((A)(B(C)))中,存在四个这样的组: 1     ((A)(B(C))) 2     (A) 3 ...

  10. CardsTube/YouTubePlaylist

    CardsTube https://github.com/DesarrolloAntonio/CardsTube YouTubePlaylist https://github.com/akoscz/Y ...