什么是哈希?加密哈希函数是在数字数据上运行的数学运算。在比特币中,所有操作都使用SHA256作为底层的加密哈希函数。安全哈希算法是国家安全局(NSA)设计的一组加密哈希函数。简而言之,哈希函数就像一个黑盒子,您可以在其中输入任何大小的数字信息,结果(输出)是一个字母数字字符串(例如:0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855)。对于SHA-256,输出为32个字节。此功能具有两个特征:1)明确:哈希(输出)就像输入数据的指纹。因此,无法从数字输入的哈希值创建原始数字输入。 2)防冲突:任何人都不可能找到导致相同哈希输出的两个不同输入值。换句话说,对于任何不同的输入,总会有不同的输出。这允许使用该功能来检查数据完整性,这可以通过比较计算出的“哈希”值来确定。 (算法执行的输出)以及已知和预期的哈希值。例如,计算下载文件的哈希值并将结果与以前发布的哈希值进行比较,可以显示下载文件是否已被修改或篡改。但是,为什么哈希在区块链中如此重要?这是采矿过程的一部分,也是矿工的职责:矿工进行一些交易并将其用作输入的一部分,他们尝试计算哈希函数以为链提供新的区块。有许多密码哈希算法。下面列出的是一些相对频繁引用的算法。在页面上可以找到更广泛的列表,其中包含加密哈希函数的比较。 MD5MD5由Ronald Rivest在1991年设计,以取代以前的哈希函数MD4,并在1992年被指定为RFC1321。与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-160RIPEMD(RACE完整性基元评估消息摘要)是由比利时鲁汶大学COSIC研究小组的汉斯·多伯丁,安东·博斯拉尔斯和巴特·普雷内尔在鲁汶开发的一种密码哈希函数,最早于1996年出版。 。 RIPEMD基于MD4中使用的设计原理,其性能类似于更流行的SHA-1。但是,RIPEMD-160尚未被销毁。顾名思义,RIPEMD-160生成一个160位(20字节)的哈希。漩涡在计算机科学和密码学中,漩涡是一种加密哈希函数。它是由Vincent Rijmen和Paulo s.l.设计的。 M. Barreto在2000年首次对其进行了描述。Whirlpool基于Advanced Encryption Standard(AES)的基本修改版本。惠而浦会生成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个字节。 NIST于2015年8月5日发布了SHA-3 SHA-3(安全哈希算法3)。SHA-3是更广泛的Keccak的子集。 Keccak算法是Guido Bertoni,Joan Daemen,Michael Peeters和Gilles Van Assche的结果。 Keccak基于海绵结构,也可以用于构造其他加密原语,例如流密码。 SHA-3提供与SHA-2相同的输出大小: