区块链Hash算法
Posted 区块链智能合约编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链Hash算法相关的知识,希望对你有一定的参考价值。
散列算法(Hash Algorithm)
又称哈希算法,杂凑算法;散列算法就是一种以较短的信息来保证文件唯一性的标志,这种标志与文件的每一个字节都相关,而且难以找到逆向规律。因此,当原有文件发生改变时,其标志值也会发生改变,从而告诉文件使用者当前的文件已经不是你所需求的文件。
Hash算法特点:
正向快速:给定明文和 hash 算法,在有限时间和有限资源内能计算出 hash 值。
逆向困难:给定(若干) hash 值,在有限时间内很难(基本不可能)逆推出明文。
输入敏感:原始输入信息修改一点信息,产生的 hash 值看起来应该都有很大不同。
冲突避免:很难找到两段内容不同的明文,使得它们的 hash 值一致(发生冲突)。即对于任意两个不同的数据块,其hash值相同的可能性极小;对于一个给定的数据块,找到和它hash值相同的数据块极为困难。
通过构造性能良好的哈希函数,可以减少冲突,但一般不可能完全避免冲突,因此解决冲突是哈希法的另一个关键问题。创建哈希表和查找哈希表都会遇到冲突,两种情况下解决冲突的方法应该一致。下面以创建哈希表为例,说明解决冲突的方法。常用的解决冲突方法有以下四种:
1.开放定址法
2. 再哈希法
这种方法是同时构造多个不同的哈希函数:
Hi=RH1(key) i=1,2,…,k
4.建立公共溢出区
这种方法的基本思想是:将哈希表分为基本表和溢出表两部分,凡是和基本表发生冲突的元素,一律填入溢出表
常用hash算法:
MD5(前身MD2/MD3/MD4):信息-摘要算法,128位散列值
SHA-1:160位散列值
SHA-2(SHA-256、SHA512、SHA384的总称):
SHA-3(又称Keccak):512位散列值
RIPEMD(128、160、256、320四种标准):256、320的强度和128、160的强度一样,只是修改的输出方式。RIPEMD-160 是一个 160 位加密哈希函数;它旨在用于替代 128 位哈希函数 MD4、MD5 和 RIPEMD。
比特币使用Hash加密算法:RIPEMD-160和SHA256哈希加密算法
比特币将这两个哈希算法的应用组合成两个函数:
hash256(d)=sha256(sha256(d))
hash160(d)=ripemd160(sha256(d))
以太坊使用的hash加密算法:SHA-3哈希加密算法(Keccak)
SHA-3,之前名为Keccak算法,是一个加密杂凑算法。
crypto.Keccak256(pubKey)[12:]
以上是关于区块链Hash算法的主要内容,如果未能解决你的问题,请参考以下文章