为什么哈希在区块链中如此重要
扫描二维码
随时随地手机看文章
什么是哈希?
加密哈希函数是在数字数据上运行的数学运算。在比特币中,所有操作都使用SHA256作为底层加密哈希函数。
安全哈希算法是由美国国家安全局(NSA)设计的一套加密哈希函数。
简单地说,哈希函数就像一个黑盒子,在这里输入任何大小的数字信息,结果(输出)是一个字母数字字符串(例如:0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855)。对于SHA-256,输出是32字节。该函数有两个特点:
1)毫不含糊:哈希 (输出)就像输入数据的指纹。因此,从数字输入的哈希中,您无法创建原始数字输入。
2)抗冲突:任何人都不可能能够找到导致相同哈希输出的两个不同输入值。换句话说,对于任何不同的输入,总会有不同的输出。这允许使用这个函数来检查数据完整性,通过将计算的“哈希”(算法执行的输出)与已知和期望的哈希进行比较,可以确定数据的完整性。例如,计算下载文件的哈希,并将结果与之前发布的哈希进行比较,可以显示下载是否被修改或篡改。
但是为什么哈希在区块链中如此重要呢?
这是挖矿过程和矿工职责的一部分: 矿工获取一些交易并将其用作输入的一部分,他们试图计算一个哈希函数来为链提供一个新的块。
加密哈希算法有很多。下面列出了一些相对经常被引用的算法。可以在包含加密哈希函数比较的页面上找到更广泛的列表。
MD5
MD5是由Ronald Rivest在1991年设计的,用于替换以前的哈希函数MD4,并在1992年指定为RFC 1321。对MD5的冲突可以在几秒钟内计算出来,这使得该算法不适合大多数需要加密哈希的用例。MD5生成128位(16字节)。
SHA-1
SHA-1是美国政府Capstone项目的一部分。该算法的最初规范——现在通常称为SHA-0——由美国政府标准机构NIST(国家标准与技术研究所)于1993年以“安全哈希标准FIPS PUB 180”的名义发布。它在出版后不久就被美国国家安全局撤回,并被1995年在FIPS PUB 180-1(通常称为SHA-1)上出版的修订版所取代。SHA-1生成一个160位(20字节)的哈希。
文档可能只将SHA-1称为“SHA”,这可能与其他标准哈希算法(如SHA-0、SHA-2和SHA-3)相冲突。
RIPEMD - 160
RIPEMD (RACE Integrity Primitives EvaluaTIon Message Digest)是由比利时鲁汶大学(Katholieke Universiteit Leuven) COSIC研究小组的Hans DobberTIn、Antoon Bosselaers和Bart Preneel在鲁汶开发的一个加密哈希函数,于1996年首次出版。RIPEMD基于MD4中使用的设计原则,其性能类似于更流行的SHA-1。然而,RIPEMD-160并没有被破坏。顾名思义,RIPEMD-160生成160位(20字节)的哈希。
Whirlpool
在计算机科学和密码学中,Whirlpool是一个加密哈希函数。它是由Vincent Rijmen和Paulo s.l. M. Barreto设计的,他们在2000年首次描述了它。Whirlpool是基于一个基本修改版本的高级加密标准(AES)。Whirlpool生成一个512位(64字节)的哈希。
SHA-2
SHA-2(安全哈希算法2)是由美国国家安全局(NSA)设计的一组加密哈希函数,于2001年首次发布。它们是使用merker - damgard结构(来自单向压缩函数本身)构建的,使用分类的专用块密码器中使用的Davies结构来构建。
SHA-2基本上由两种哈希算法组成:SHA-256和SHA-512。SHA-224是SHA-256的一个变体,具有不同的初始值和截断的输出。SHA-384和不太为人所知的SHA-512/224和SHA-512/256都是SHA-512的变形。在AMD64等64位上,SHA-512比SHA-256更安全,而且通常比SHA-256更快。
以位为单位的输出大小由“SHA”名称的扩展名给出,因此SHA-224的输出大小为224位(28字节),SHA-256生成32字节,SHA-384生成48字节,最后SHA-512生成64字节。
SHA-3
SHA-3 (Secure Hash Algorithm 3)于2015年8月5日由NIST发布。SHA-3是更广泛的Keccak的一个子集。Keccak算法是Guido Bertoni、Joan Daemen、Michael Peeters和Gilles Van Assche的成果。Keccak基于sponge 结构,sponge 结构还可以用于构建其他加密原语,如流cypher。SHA-3提供与SHA-2相同的输出大小:224、256、384和512位。
还可以使用SHAKE-128和SHAKE-256函数获得可配置的输出大小。这里名称的-128和-256扩展表示函数的安全强度,而不是以位为单位的输出大小。
BLAKE2
2012年12月21日,布莱克的改版产品BLAKE2发布。它是由Jean-Philippe Aumasson、Samuel Neves、Zooko Wilcox-O ‘Hearn和ChrisTIan Winnerlein创建的,目标是取代广泛使用的MD5和SHA-1算法。当运行在64x64和ARM架构上时,BLAKE2b比SHA-3、SHA-2、SHA-1和MD5更快。尽管BLAKE和BLAKE2还没有被标准化为SHA-3,但它已经在许多协议中使用,包括argon2加密哈希,因为它在现代cpu上提供了很高的效率。由于BLAKE是SHA-3的候选对象,BLAKE和BLAKE2都提供了与SHA-3相同的输出大小——包括可配置的输出大小。