• 全部
  • 学员成长
  • 技术介绍
  • 学业任务
最新发布
最新回复
内容评分
精选
切换为经典版
比特币和哈希算法 一、概念初识 哈希算法,又称散列算法,就是指一种把任何长度的数据提炼出固定长度数字“指纹”的方法。 哈希算法有一个输入和一个输出,输入时任意长度的数据,在算法内部不管输入的数据是何种形式,都以单纯的比特序列来处理。简单来说对于哈希算法,它看到的输入就是一串由0和1组成的二进制数。 哈希算法的输出就是最后的哈希值或者散列值,具体来说就是哈希算法把数据打乱混合,压缩成摘要,使得数据量变小,重新创建一个叫做哈希值的指纹。 只有完全一样的输入值才能得到完全一样的输出值;输入值与输出值之间没有规律,所以不能通过输出值算出输入值,要想找到特定的输出值,只能采用枚举法,不断更换输入值,直到找到满足条件的输出值。 二、深入理解 这个HASH算法不是大学里数据结构课里那个HASH表的算法,而是密码学的基础。 比较常用的有MD5和SHA,最重要的两条性质,就是不可逆和无冲突。所谓不可逆,就是当你知道x的HASH值,无法求出x;所谓无冲突,就是当你知道x,无法求出一个y, 使x与y的HASH值相同。这两条性质在数学上都是不成立的。 因为一个函数必然可逆,且由于HASH函数的值域有限,理论上会有无穷多个不同的原始值,它们的hash值都相同。MD5和SHA做到的,是求逆和求冲突在计算上不可能,也就是正向计算很容易,而反向计算即使穷尽人类所有的计算资源都做不到。 三、原理基础 密码学的几个算法(HASH、对称加密、公私钥)是计算机科学领域最伟大的发明之一,它授予了弱小的个人在强权面前信息的安全(而且是绝对的安全)。 四、挖矿与哈希算法 比特币区块是由区块头和区块体构成,其中区块头细分为: 父区块头哈希值:前一区块的哈希值; 区块版本号:表示本区块遵守的验证规则; 时间戳:该区块产生的近似时间; 难度:该区块工作量证明算法的难度目标; Merkle根:该区块中交易的Merkle树根的哈希值;区块哈希就是对区块头进行哈希计算,得出某个区块的哈希值,用这个哈希值可以唯一确定某一个区块,相当于给区块设定了一个身份证号。而区块与区块之间就是通过这个身份证号进行串联,从而形成了一个区块链的结构。
...全文
221
评分
回复
26
评分
回复
发帖
江信Python研究社区
加入

158

社区成员

173

社区内容

一个专注于研究python语言的社区
社区公告
暂无公告