区块链期末复习1.1:密码学哈希函数

一、哈希函数应该具备的三个特性

1.输入可以为任意长度的字符串

2.产生固定大小输出(比如256位)

3.能进行有效计算。对于n位字符串,可以在O(n)的时间内计算出哈希值。

二.加密哈希函数的三个特性

1.collision-resistance(碰撞阻力)

1)碰撞:对于两个不同的输入,产生相同的输出。比如给定x \not\equiv y,H(x)和H(y)却是相等的

 

2)碰撞阻力:无法找到两个值x,y;当x \not\equiv y时,H\left ( x \right )= H\left ( y \right ).

注:不是没有碰撞,而是无法找到碰撞。(存在碰撞是因为:输入空间无限,输出空间有限)

3)找到碰撞的例子

ex1.输入(2^{^{256}}+1)--哈希-->输出(2^{^{256}})。穷举每个输入的哈希值,必然存在碰撞。

即对于一个输出为256位的哈希函数而言,最坏情况要进行2^{^{256}}+1次哈希计算,平均要进行2^{^{128}}次哈希运算。

ex2.对于某些哈希函数,除了穷举之外还有其他方式。比如:H\left ( x\right )=x \mod \ 2^{^{256}}

对于x,x+2^{^{256}}就与之形成碰撞。

4)碰撞阻力的用途:信息摘要(message digest)

即哈希之后的内容可以代表哈希之前的内容。比如一个文件很复杂,我们要判断这个文件有没有损失,只需要对比文件前后的哈希值是否相同。(如果损坏了,根据碰撞阻力,哈希值会改变)

2.hiding(隐秘性)

1)前提:需要输入集合很大(仅仅通过尝试几个可能的x,找不到想要的H(x);也就无法根据H(x)判断原先的输入是哪个x)

2) 隐秘性定义当其输入r选自一个高阶最小熵(high min-entroy)的概率分布,在给定H(r‖x)条件下来确定x是不可行的。

(说人话就是,给定一个哈希值,很难找到这个哈希值对应的输入x.H(x)推不出x)

通俗理解高阶最小熵:

即使在最“保守”的情况下,仍然有很多的可能性。

3)隐秘性用途:承诺(commitment)

把承诺的内容(假设是数字)进行哈希,哈希值公布出去作为承诺,而原本承诺的内容对其他人来说还是秘密。(即展示H(x),隐藏x,同时H(x)又确保自己给出了x这个承诺)

4)承诺协议

  • com:commit(msg,nonce)  即信息+随机数->承诺
  • verify(com,msg,nonce) 即如果com==commit(msg,nonce),返回真,反之返回假

(要求两个安全特性,一是隐秘性(com推不出msg),二是约束性(找不到两组msg,nonce数对使comm相等)。约束性可以通过哈希函数的碰撞阻力实现)

(隐秘性使得承诺公布前不会被其他人知晓,约束性使得承诺人不能改变承诺。)

3.puzzle-friendliness(谜题友好)

1)谜题友好定义:对于任意n位输出值y,假定k选自高阶最小熵分布,如果无法找到一个可行的办法,在比2的n次方小很多的时间内找到x,使得H(k||x)==y成立,那么我们称哈希函数H为谜题友好。

说人话,给一个谜题(哈希函数值),如果除了暴力穷举之外没别的好办法能解出来(求出输入值x),那么就叫谜题友好。

2)应用:搜索谜题

搜索谜题构成: 

  • 一个哈希函数H
  • 在高阶最小熵分布中选出一个取值,id(我们称作谜题ID)
  • 目标集合Y

该谜题的解决方法为一个解,x,应满足下面公式:

H(idǁx)Y

解决这个谜题 要求找到一个位于目标集合Y中的输出值(集合Y往往比所有输出集合小很多)。Y的大小决定了谜题的难度,Y越大题目越简单。

三、安全哈希算法

1.MD变换(merkle damgard)

1)定义:将接收固定长度输入的哈希函数,转化为接收任意长度输入的哈希函数。(固定长度输入->任意长度输入)

2)压缩函数(compression function):可用于固定长度,具备碰撞阻力的哈希函数。

3)MD变换运作实例:

  • 压缩函数需要代入长度为m的输入值,并产生长度短一点的为n的输出值
  • 任意长度大小的输入被分为多个区块,每个区块的大小为m-n
  • 将每个区块的输入,与上一个区块的输出合并在一起代入压缩函数(也就是说,输入长度为(m-n)+n=m)
  • 第一个区块之前没有区块,所以需要指定一个初始向量(长度为n)
  • 最后一个区块的输出为返回的结果

2.SHA-256函数

 1)利用的压缩函数:输入(768位)--压缩-->输出(256位)。

所以m=768,n=256,区块大小m-n=512.

2)工作流程如图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/890632.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数学建模两篇小文

1.雪球的融化 设雪球在融化时体积的变化率与表面积成比例,并且在融化过程中它始终为球体。该雪球在开始时的半径为6cm,经过2h后,其半径缩小为3cm。求雪球的体积随时间变化的关系。 解 ~~~~~ 设 t t t时刻雪球的体积为 V ( t ) V(t) V(t)&am…

ET中发送Get请求和Post请求(C#)

应用场景:一个游戏可能会衍生出其他APP或小程序之类的软件,例如王者营地是王者荣耀的官方APP,王者营地提供资讯、赛事、社区、战绩等功能。所以游戏端会和衍生出来的软件端做一些数据互通。这里把软件端称为中台系统。 Get请求和Post请求的区…

华为:数字化转型只有“起点”,没有“终点”

上个月,我收到了一位朋友的私信,他询问我是否有关于华为数字化转型的资料。幸运的是,我手头正好收藏了一些,于是我便分享给他。 然后在昨天,他又再次联系我,并感慨:“如果当初我在进行企业数字…

活着就好20241226

亲爱的朋友们,大家早上好!🌞 今天是26号,星期四,2024年12月的第二十六天,同时也是第51周的第四天,农历甲辰[龙]年十一月初二十二日。在这晨光熹微的美好时刻,愿那和煦而明媚的阳光继…

Android基于Path的addRoundRect,Canvas剪切clipPath简洁的圆形图实现,Kotlin(2)

Android基于Path的addRoundRect,Canvas剪切clipPath简洁的圆形图实现,Kotlin(2) import android.content.Context import android.graphics.BitmapFactory import android.graphics.Canvas import android.graphics.Path import a…

中化信息与枫清科技深化合作:共探“AI+”产业新生态

随着数字化转型的浪潮席卷全球,数据已成为推动创新和经济增长的关键力量。为持续深化数据要素价值挖掘与应用实践,推动打造行业交流平台,驱动产业创新共荣,2024 年 12 月 18 日 -19 日,由中国通信标准化协会主办的“20…

Flink Data Source详解

注意在高版本中SourceFunction以及其子类RichSourceFunction、ParallelSourceFunction等已经被标记为废弃,所以我们要看数据源的实现只需要关注Source接口(org.apache.flink.api.connector.source.Source)。了解Source背后的架构和运行原理有助于我们更好的使用Source,或者…

Matrix-Breakout 2 Morpheus

第一步 信息收集 (1)寻找靶场真实ip arp-scan -l 靶场真实 ip 为192.168.152.154 (2)探测端口及服务 nmap -p- -sV 192.168.52.135 第二步 开始渗透 (1)访问web服务 http://192.168.152.154and http://192.168.52.135:81 发现 81 端口的页面要登录 我们使用 dirb 扫描…

我的AI工具箱Tauri版-ZoomImageSUPIR图像超细节缩放

本教程基于自研的AI工具箱Tauri版进行ZoomImageSUPIR图像超细节缩放。 ZoomImageSUPIR图像超细节缩放 是一款专为图像处理优化的工具,支持图像的高精度放大与缩小操作,满足多场景需求。通过集成 SUPIR(Super-resolution Image Processing wi…

软件工程-【软件项目管理】--期末复习题汇总

一、单项选择题 (1)赶工一个任务时,你应该关注( C ) A. 尽可能多的任务 B. 非关键任务 C. 加速执行关键路径上的任务 D. 通过成本最低化加速执行任务 (2)下列哪个不是项目管理计划的一部分&…

一些基础面试题

重写和重载的区别: 方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二…

访问ipv6的坑

如何访问ipv6站点 本机ipv6回环地址: http://[0:0:0:0:0:0:0:1]:8080/index.html 类似ipv4的127.0.0.1 查看本机的ipv6地址 使用ipconfig命令查看 ac900::27bf:9999:6950:dfa7%15需要去掉%符号后面的内容 ac900::27bf:9999:6950:dfa http://[ac900::27bf:9999:6950:dfa]:80…

Java对象的内存分布(一)

一、概览 在Hotspot虚拟机中,java对象在内存中分布如下图所示: --------------------------------------------- | 对象头 | 实例数据 | 对齐填充 | --------------------------------------------- 对象大小 对象头 实例数据 [填…

docker部署微信小程序自动构建发布和更新

通过 Jenkins 和 Docker 部署微信小程序,并实现自动构建、发布和版本更新,主要涉及以下几个步骤: 设置 Jenkins 环境配置 GitLab 与 Jenkins 的集成构建 Docker 镜像部署和发布微信小程序配置 Jenkins 自动构建 以下是详细的步骤说明&#…

RY2200 One Cell Li-ion and Li-poly Battery Protection IC

1、Features Protection ofCharger Reverse Connection 50mΩ Low RssoN) Internal Power MOSFET Protection of Battery Cell Reverse Connection Delay Times are generated inside Over-temperature Protection …

鼎盛合|高转速无刷风扇方案设计开发

在现代科技飞速发展的时代,人们对于电器设备的性能要求越来越高。风扇作为一种常见的电器,在日常生活和工业生产中都有着广泛的应用。而高转速无刷风扇以其高效、低噪、长寿命等优点,逐渐成为了市场的宠儿。本文将详细探讨高转速无刷风扇的方…

H3C MPLS跨域optionB

实验拓扑 实验需求 如图,VPN1 和 VPN2 分别通过运营商 MPLS VPN 连接各自分支机构按照图示配置 IP 地址,VPN1 和 VPN2 连接同一个 PE 设备的私网 IP 网段存在地址复用,使用多 VRF 技术来防止 IP 冲突AS 100 和 AS 200 内部的公共网络中各自运行 OSPF 使 AS 内各设备的 Loo…

harmony动画属性

属性动画 显式动画 转场动画

【day16】Java开发常用API

模块15回顾 在深入探讨模块16之前,让我们回顾一下【day15】中的重点内容: String类: 构造方法:String(), String(String s), String(char[] chars), String(byte[] bytes), String(char[] chars, int offset, int count), String…

申请腾讯混元的API Key并且使用LobeChat调用混元AI

申请腾讯混元的API Key并且使用LobeChat调用混元AI 之前星哥写了一篇文章《手把手教拥有你自己的大模型ChatGPT和Gemini等应用-开源lobe-chat》搭建的开源项目,今天这篇文章教大家如何添加腾讯云的混元模型,并且使用LobeChat调用腾讯混元AI。 申请腾讯混…