标签:Hash 哈希 谜题 collision BTC target 加密 输入 函数
Cryptographic Hash Functions(加密哈希函数)
Hash函数可以接受任何字符串(任意大小)作为输入,产生固定大小(256)的输出。
性质:
-
collision resistance(抗碰撞) / collision-free(无碰撞)
没有人可以找到 x 和 y 的值,x !=y 但是 H(x)=H(y)。
输入空间是无限大的,输入内容可以是任意字符串,输出必须是256位的字符串。若输入空间中的每一点映射到输出空间上,必然存在很多输入值有相同输出。(碰撞是存在的,但人为制造碰撞的可能性是无限小的)
目前没有哪个Hash函数被证明是collision-free的(无法理论证明),只是人们没有成功找到碰撞。所以我们选择相信是collision-free。
应用:message digest
上传文件,记录H(文件)值
下载文件,计算H(文件’)值
if(H(文件)==H(文件’))文件没有被篡改
- hiding(隐藏)
得到 Hash函数的输出 H(x),没有可行的方法来确定输入的 x 是什么。Hash函数计算过程是单向的、不可逆的。
实际操作:H( x | nonce ),其中 nonce 为随机值,保证输入的随机性,分布均匀。
给定 H( x | nonce )的值,找到 x 是不可能的,这就是 Hash函数所拥有的隐藏属性。
用法:结合 collision resistance 使用,实现 digital equivalent of a sealed envelope(数字加密信封)。
-
puzzle-friendly(谜题友好性)
H( id | x)≤ target,给定一个 target(目标阈值),使得计算的 Hash值落入其中。id 为特定的谜题,x 则是谜题的解决方案。
这里的 puzzle-friendly 体现在谜题没有解决的方案。
唯一的办法就是不断地尝试各种不同的随机值,使得Hash值落在target 中。
一旦有一个人找到了随机数,其他人要验证它是否落在 target 中是很容易的,只需要进行一次 Hash函数运算就可以了。
所以说在比特币系统中 difficulty to solve ,but easy to verify(挖矿很难,验证很容易)
- 比特币中所使用的 Hash函数 为 SHA-256
标签:Hash,哈希,谜题,collision,BTC,target,加密,输入,函数 来源: https://blog.csdn.net/weixin_48453983/article/details/116519955
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。