Java编程

区块链扣丁学堂千锋教育

区块链技术作为比特币的底层技术,本质上是一个去中心化的数据库。是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案。区块链技术是一种不依赖第三方、通过自身分布式节点进行网络数据的存储、验证、传递和交流的一种技术方案。因此,有人从金融会计的角度,把区块链技术看成是一种分布式开放性去中心化的大型网络记账薄,任何人任何时间都可以采用相同的技术标准加入自己的信息,延伸区块链,持续满足各种需求带来的数据录入需要。

区块链扣丁学堂千锋教育

那么下面来介绍一下关于区块链培训技术之哈希函数详解:

哈希函数是指一类数学运算过程,它接受任意大小的输入值,经过一番运算后可以很快给出一个确定的固定长度的输出值,这个输出值可以作为这个输入值的数字指纹。正如对于双胞胎而言,他们各自的指纹也是独一无二的,哈希函数的设计使得它也具有同样的特性:即使是非常微小的输入值差别,哈希函数的运算结果也会有非常巨大的差异。除此以外,哈希函数没有任何启发式算法,输入和输出的关系看起来是完全随机的,例如给一个确定的输出结果,要求对应的输入值应该是多少,或者是要求输出结果小于某个值,问一个符合条件的输入值应该是多少,这些问题的求解没有什么技巧和方法可循,只能通过不断地进行尝试,尝试的次数越多,越有可能找到答案。

我们可以利用哈希函数的这些特性实现很多功能。例如数据保护:将数据的内容和数据的哈希值一起发送,接收者对接收到的数据进行哈希运算,对比即可知道数据是否被篡改。再比如,网站在进行用户登录时,可以在数据库里存储用户密码的哈希值,与用户输入的密码的哈希值进行比对来验证身份,好处是如果数据库泄露,黑客也不能通过这些哈希值来反推出用户的密码,相对来说比较安全。

值得注意的是,哈希函数的输入集合是无限的,而由于输出长度固定,输出的所有可能集合是有限的,根据鸽笼原理:n+1个元素放到n个集合中去,其中必定有一个集合里至少有两个元素。所以两个不同的输入值有相同的哈希值理论上是一定存在的,但是好在这样的事情发生的概率非常小,而且哈希函数也在不断改进,SHA1函数就曾经被密码分析人员发现了有效的攻击方法,目前比特币在内的系统采用了更先进的SHA2系列算法,比特币多年的良好运行表明至少到目前为止SHA256算法经受了检验。此外,连续多次使用哈希函数也是一种更加安全的选择。

哈希函数在比特币中有多处运用,可以说扮演了非常关键的角色。

对交易信息进行压缩和验证

由于区块链要处理的交易信息内容庞大,将每个块内的所有数据直接以序列的方式存储将会非常低效且耗时,但是利用哈希函数可以对信息进行压缩和验证。使用Merkle树可以很快验证某笔交易是否属于某个区块,它的简化示意图如下,对于打包到一个区块的所有交易,首先将它们划分为几个部分,如下图中的交易信息1、交易信息2……并计算出对应的哈希值1、哈希值2……之后两两结合进行哈希运算,最终得到这个Merkle树的根哈希值。如果某一笔交易信息记录的数据有变化,那么最终算出来的Merkle根哈希值也会不一样。

Similar Posts

发表评论

邮箱地址不会被公开。 必填项已用*标注