其他分享
首页 > 其他分享> > BTC-加密哈希函数

BTC-加密哈希函数

作者:互联网

Cryptographic Hash Functions(加密哈希函数)

Hash函数可以接受任何字符串(任意大小)作为输入,产生固定大小(256)的输出。

性质:

  1. 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(文件’))文件没有被篡改

  1. hiding(隐藏)
    在这里插入图片描述
    得到 Hash函数的输出 H(x),没有可行的方法来确定输入的 x 是什么。Hash函数计算过程是单向的、不可逆的。

实际操作:H( x | nonce ),其中 nonce 为随机值,保证输入的随机性,分布均匀。

给定 H( x | nonce )的值,找到 x 是不可能的,这就是 Hash函数所拥有的隐藏属性。

用法:结合 collision resistance 使用,实现 digital equivalent of a sealed envelope(数字加密信封)。

  1. puzzle-friendly(谜题友好性)

    H( id | x)≤ target,给定一个 target(目标阈值),使得计算的 Hash值落入其中。id 为特定的谜题,x 则是谜题的解决方案。

这里的 puzzle-friendly 体现在谜题没有解决的方案。
唯一的办法就是不断地尝试各种不同的随机值,使得Hash值落在target 中。
一旦有一个人找到了随机数,其他人要验证它是否落在 target 中是很容易的,只需要进行一次 Hash函数运算就可以了。
所以说在比特币系统中 difficulty to solve ,but easy to verify(挖矿很难,验证很容易)

标签:Hash,哈希,谜题,collision,BTC,target,加密,输入,函数
来源: https://blog.csdn.net/weixin_48453983/article/details/116519955