发表:2022-11-02 23:33:08 浏览数:
来源:作者:
给定Hash函数H和任意的消息输入x,本文目录什么是Hash函数Hash哈希是什么意思什么是hashhash什么意思什么是Hash函数首先介绍下Hash函数Hash函数(也称散列函数或散列算法)的输入为任意长度的消息,不带密钥的Hash函数只需要有一个消息输入,即Hash函数是一种将任意长度的消息串M映射成为一个定长消息的函数,找到一个消息输入使得它的Hash值等于这个输出,Hash函数将一个任意比特长度的输入x,哈希这个词也用于指代这样一个函数的输出值什么是hash提到hash,Hash函数的目的是为指定的消息产生一个消息“指纹”。
首先介绍下Hash函数
Hash函数(也称散列函数或散列算法)的输入为任意长度的消息,而输出为某一固定长度的消息,即Hash函数是一种将任意长度的消息串M映射成为一个定长消息的函数,记为H。称h=H(M)为消息M的Hash值或消息摘要,有时也称为消息的指纹。通常Hash函数应用于数字签名、消息完整性检查等方面。
设H是一个Hash函数,x是任意长度的二元串,相应的消息摘要为y=H(x),通常消息摘要是一个相对较短的二元串。假设我们已经计算出了y的值,那么如果有人改变了x的值为xˊ,则通过计算消息摘要yˊ=H(xˊ),验证yˊ与y不相等就可以知道原来的消息x已被改变。
通常,Hash函数可以分为两类:不带密钥的Hash函数和带密钥的Hash函数。不带密钥的Hash函数只需要有一个消息输入;带密钥的Hash函数规定要有两个不同的输入,即一个消息和一个密钥。
Hash函数的目的是为指定的消息产生一个消息“指纹”,Hash函数通常具有以下这些性质:
攻击者可以对Hash函数发起两种攻击。第一种是找出一个xˊ,使得H(x)= H(xˊ)。例如,在一个使用Hash函数的签名方案中,假设s是签名者对消息x的一个有效签名,s=sig(H(x))。攻击者可能会寻找一个与x不同的消息xˊ,使得H(x)= H(xˊ)。如果找得到,则攻击者就可以伪造对消息xˊ的签名,这事因为s也是对消息xˊ的有效签名。Hash函数的弱无碰撞性可以抵抗这种攻击。
攻击者还可以发起另一种攻击,同样一个应用Hash函数的签名方案中,对手可能会寻找两个不同的消息x和xˊ,使得H(x)= H(xˊ),然后说服签名者对消息x签名,得到s=sig(H(x))。由于s=sig(H(xˊ)),所以攻击者得到了一个对消息xˊ的有效签名。Hash函数的强无碰撞性可以抵抗这种攻击。
Hash函数的另一种常见的攻击方法是生日攻击,感兴趣的读者可以参阅参考文献中生日攻击的的相关资料。为防止生日攻击,通常的方法就是增加Hash值的比特长度,一般最小的可接受长度为128位。常见的Hash函数,如MD5和SHA分别具有128比特和160比特的消息摘要。
(或译作“散列”)是一种函数,它把任何数字或者字符串输入转化成一个固定长度的输出。通过输出我们不可能反向推得输入,除非尝试了所有的可能的输入值。下面是一个简单的哈希函数的例子,平方根:17202的平方根是很容易求得的,它大概是131.15639519291463,所以一个简单的哈希函数的输出可能是输入的数字的平方根的后面几位小数,在这个例子里面就是9291463。但是,只给出9291463的话,我们几乎不可能推算出它是哪个输入的输出。现代加密哈希比如像SHA-256,比上面这个例子要复杂的多也要安全的多。哈希这个词也用于指代这样一个函数的输出值
提到hash,相信大多数同学都不会陌生,之前很火现在也依旧很火的技术区块链背后的底层原理之一就是hash,下面就从hash算法的原理和实际应用等几个角度,对hash算法进行一个讲解。
1、什么是Hash
Hash也称散列、哈希,对应的英文都是Hash。基本原理就是把任意长度的输入,通过Hash算法变成固定长度的输出。这个映射的规则就是对应的Hash算法,而原始数据映射后的二进制串就是哈希值。活动开发中经常使用的MD5和SHA都是历史悠久的Hash算法。
echo md5(“这是一个测试文案“);
// 输出结果:2124968af757ed51e71e6abeac04f98d
在这个例子里,这是一个测试文案是原始值,
2124968af757ed51e71e6abeac04f98d 就是经过hash算法得到的Hash值。整个Hash算法的过程就是把原始任意长度的值空间,映射成固定长度的值空间的过程。
2、Hash的特点
一个优秀的hash算法,需要什么样的要求呢?
a)、从hash值不可以反向推导出原始的数据
这个从上面MD5的例子里可以明确看到,经过映射后的数据和原始数据没有对应关系
b)、输入数据的微小变化会得到完全不同的hash值,相同的数据会得到相同的值
echo md5(“这是一个测试文案“);// 输出结果:2124968af757ed51e71e6abeac04f98decho md5(“这是二个测试文案“);// 输出结果:bcc2a4bb4373076d494b2223aef9f702可以看到我们只改了一个文字,但是整个得到的hash值产生了非常大的变化。
c)、哈希算法的执行效率要高效,长的文本也能快速地计算出哈希值
d)、hash算法的冲突概率要小
由于hash的原理是将输入空间的值映射成hash空间内,而hash值的空间远小于输入的空间。根据抽屉原理,一定会存在不同的输入被映射成相同输出的情况。那么作为一个好的hash算法,就需要这种冲突的概率尽可能小
Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
HASH函数(计算机算法领域)
本文目录哪款手机的系统是ubuntu的ubuntu系统下怎么连接手机手势操作秒安卓 Ubuntu版PRO 5深度体验Ubuntu手机系统会成
畅销手机排行(2020最畅销手机TOP10出炉,为何苹果能够疯狂霸榜...
本文目录2020最畅销手机TOP10出炉,为何苹果能够疯狂霸榜上半年最畅销的是哪几台手机呢2021年全球手机销量排行出炉,其中哪些品牌的手机
电脑硬件基本知识?从哪可以对电脑硬件知识的全方面了解和各种搭...
本文目录电脑硬件基本知识从哪可以对电脑硬件知识的全方面了解和各种搭配,想学学DIY装机小白一枚硬件工程师需要学习哪些知识为什么电脑城的小弟小
军校新生适合带便携电脑吗?便携的办公用笔记本电脑有什么好推荐
surface go还是surface pro对于研究生来说surface确实是比ipad更为好用的平板电脑,surface go还是sur
1p空调 一天(24小时)的耗电量是多少?小一匹空调每小时的用电...
本文目录1p空调 一天(24小时)的耗电量是多少小一匹空调每小时的用电是多少1p空调一晚上多少度电1匹的空调耗电量是多少1p空调 一天(24
戴尔电脑d610怎么装系统?我的笔记本是dell d610,咨询一下升级c...
咨询一下升级cpu的问题dell d610怎么设置u盘启动戴尔笔记本D610怎么样 性能和价格怎么样呢戴尔电脑d610怎么装系统1,有些bi
现在市面上当Iphone4基本上都是(扳机)意思就是翻新机 组装机 质量很差很差,本文目录iphone4上市价格多少iphone4的价格到底
百度杀毒评测(Windows自带的杀毒软件真的强到可以不用第三方杀...
发现越来越多的电脑似乎都不怎么安装杀毒软件了,再比如百度杀毒软件都已下线了,当下的杀毒软件越来越少大家能够说了几款杀毒软件名称来,杀毒软件并
格兰仕烤箱怎么样 格兰仕烤箱的价格及使用方法介绍?格兰仕烤箱...
格兰仕烤箱怎么样 格兰仕电烤箱的烧烤功能十分全面,本文目录格兰仕烤箱怎么样 格兰仕烤箱的价格及使用方法介绍格兰仕烤箱价格是多少美的 格兰仕