[day7 风子890] 比特币背后的密码学技术(哈希函数)

比特币是一种加密型的数字货币,对比特币来说,密码学是比特币体系的重要组成部分。比特币也是在密码朋克圈子里讨论、产生和早期进行完善的,密码朋克是20世纪80年代世界一些顶尖的密码专家讨论的一个圈子。因此,对比特币用户来说,了解比特币背后的密码学理论,有助于更好的理解比特币。在很多人眼中,比特币是一个很神秘的技术,但如果你认为比特币背后的密码技术也高深,那其实不是这样。比特币主要使用的密码算法是哈希算法、非对称密钥算法,这些加密算法很常见,特别是在网上银行等网上交易系统上广泛应用这些加密算法。比特币本身并没有创造新的密码学成果,但比特币利用已知的密码技术构建了一个令人惊奇的全新的数字货币世界。那么,这些通用的密码算法是怎么集成在比特币系统中,在比特币中这些加密算法解决了什么样的安全问题?

哈希算法基础知识这是比特币系统非常重要的一个算法。哈希(Hash)算法,也叫摘要算法。它有一个输入,再经过哈希后,产生一个固定位数的输出,这个输出也叫哈希值或摘要。哈希算法具有不可逆的单向的的特点,也就是给定哈希值,不能反向推导出输入。我们可以利用哈希函数的这个特点,实现口令,密码等数据的安全存储。比如在UNIX系统登陆用户的口令验证,UNIX系统事先会把口令存储在UNIX目录上的密码配置文件中,用户登陆会重新对口令进行哈希并与事先存储的哈什进行比特地,如果一致就表示验证通过。

哈希的另一个特点是它的输入是任意长度,但输出是固定长度,不同的哈希算法有不同的位数输出有160位,256位,现在比特币系统使用的是256位比特的哈希函数。哈希这个特性类似于信息摘要或者是信息指纹,类似于照片的快照。哈希函数的这个特性,我们经常应用来做文件校验和源代码的完整性校验。

哈希还有一个特性是原始信息任一细小的变化都会哈希出完成不一样的摘要信息,一篇几万字的文章即改动一个标点符合,得到的哈希也会是面目全非。此外,我们还要了解哈希的抗碰撞性。抗碰撞性是指给定两个明文,分别进行哈希,得到的哈希值也不同,反过来假设已知一个输入和相应的哈希值,很难找到另一个输入得到同样的哈希值。

哈希在比特币的应用哈希算法在比特币的实现上是随处可见,在区块链数据链状结构做指针、交易数据结构做指针、默卡数、共识算法也就是挖矿算法中有应用。比如比特币采用区块链的数据结构,比特币每10-分钟的交易会被打包成一个叫做块的数据进行存储,这样每10分钟的交易一块,下一个10分钟又是一个数据块。区块之间应该通过一定的规则连接起来。比特币将每一个区块和和上一个区块间通过哈希值串连起来,也就是说第二个区块的头部存有第一个区块哈希值,而第三个区块的头部存有第二个区块的哈希值,以此类推,前面我们知道哈希函数就是数据摘要或者指纹,因此一个区块包含了上一个区块的哈希值,可以说是这个区块包含上一个区块的信息,由于上一个区块具有上上个区块的哈希值,因此可以这么说一个区块包含了这面所有区块的信息,这样一个个区块通过哈希值首尾相连起来的数据链条就是区块链,如果有恶意者修改其中的一个交易信息,相应这个块以及往后的哈希值也会验证失败,所以这种数据结构可以防止交易篡改。

你可能感兴趣的:([day7 风子890] 比特币背后的密码学技术(哈希函数))