你尚力财经小编2022可能知道,计算机中所有的数据都是由0或1组成的,最小的数据单位是比特,也是0或1。假设一台电脑有很多灯泡,这个灯泡有两种状态,亮(1)或灭(0)。并且灯泡显示的图案对于不同的数据是不同的。大数据,比如视频,用了相当多的灯泡,而一封简短的邮件需要的灯泡就比较少。一个灯泡代表一点。另外,你可能听说过一个词叫字节,一个字节相当于八个灯泡的组合。而1MB的数据大约是100万字节,相当于800万个灯泡。
现在的家用电脑都有几十亿甚至上万亿的灯泡。但我们发现,即使是256个灯泡的集合,也足以代表宇宙中任何可以观察到的粒子。想象一下256个灯泡组可以产生的所有图案。这将是一个天文数字:也就是说,2 256种可能性。
哈希函数,即取任意一个输入,都可以产生一个特定大小的输出。这个使用散列函数然后产生一些数据的过程被称为散列或散列的音译。哈希函数的输出称为哈希。特定哈希函数的基本特征是其输出的大小。以本文中的例子为例。我们使用输出为256位(32字节)的散列函数。当然,也有哈希函数可以产生更小的输出或更大的输出,也有其他哈希函数可以产生256位,但在这个例子中,我们并不关心使用的具体哈希函数。
尚力财经小编2022
使用这个例子的hash函数,当一个N兆字节(MB)的视频被hash后,那么它的输出结果是:256个灯泡中的一部分被点亮。当一封简短的电子邮件被散列时,这256个灯泡的输出显示出另一种模式。在某些方面,哈希看起来像压缩。简单解释一下两者的区别。哈希方法总是产生相同数量的灯泡,而压缩N兆位(MB)视频的结果仍然产生数百万个灯泡的输出。压缩视频可以解压缩以获得原始视频。当一个视频被散列到只有256个灯泡时,从这个散列中重建原始视频的可能性非常小。这听起来可能不太理想,但实际上这是hash函数的一个强大功能。
安全加密哈希函数的一个关键特征是它是单向的。这意味着从数学和计算机科学的角度来看,几乎不可能从输出中推导出输入。也就是说,给定一个散列,知道或查找提供给这个散列函数的输入数据应该是不可行的。技术上,我们称之为前像阻力。
因此,无论哈希方法操作更大还是更小的输入,哈希函数都应该消耗大约相同的时间。另一个理想的结果是,这个哈希,也就是哈希函数生成的灯泡图案,看起来是随机的。通过散列数据“密码1”生成的灯泡图案与通过散列数据“密码2”生成的灯泡图案非常不同。否则,如果模式相似,对方就可以推断输入相似,如果找到相关的词(如“pass”和“word”),就可以很容易地找到密码。安全散列函数,即使输入仅相差一位,也会产生明显不同的输出。
安全的理想行为是给出一个散列,而找到输入数据的唯一方法是散列所有输入的组合,直到正确的输入被散列。 如果输入是随机的,找到它的时间是不确定的。
虽然查找一个hash的输入应该很困难,而且需要很长时间,但是计算一个hash可以很快完成。具有大量输入的散列函数可能在不到一秒的时间内得到输出。考虑到现在的智能手机每秒可以进行数十亿次计算,一秒钟相当于计算很长时间。
加密散列函数还应该是抗冲突的。冲突过程意味着当散列函数对多个输入进行操作时,它会产生相同的输出。如果使用哈希方法计算数据1(可能是电子表格),而使用哈希方法计算数据2(可能是图片),两者产生的输出相同,那么就会发生这种冲突。
当我们描述区块链和散列部分时,加密散列函数的安全性的重要性将变得更加清楚。
散列法在区块链被广泛使用。这里有一些例子。
区块链上的地址是通过散列公钥获得的。以太坊的账户地址是用KECC CAK-256(开发者应该读懂它和SHA3-256的密钥区别)哈希法计算公钥得到的。比特币地址是通过使用SHA 2256和RIPEMD160散列公钥获得的。
哈希函数的防冲突属性很重要,因为如果两个人产生了同一个地址(有冲突),那么任何一方都可以把钱花在这个地址上。
签名也是区块链的基本组成部分。与签署支票类似,加密签名决定了哪些交易是有效的。签名是通过散列私钥和要签名的数据生成的。
事务哈希在区块链非常明显。例如,描述一个交易:“Alice在D日T寄给Bob X单位的货币”,那么该交易将作为它们的散列提交。例如,5c 504 e 432 CB 51138 BCF 09 a5 E8 a 410 DD 4 a 1 e 204 e 84 bfe 16 dfba 1 b 22060是区块链以太坊的交易。Hash也更直接可用,比如“1337个块中的第1024个事务”的描述。你只需要复制这个散列并将其粘贴到区块链浏览器中,然后你就可以查看这个交易的细节。
形而上地说,区块链中的块是由它们的散列决定的,散列起着识别和完全验证的双重作用。标识字符串还提供其自身的完整性,这被称为自认证标识符。
对于使用挖掘机制的区块链,工作证明是一个数字,我们称之为nonce。当它与其他散列数据组合时,它将产生一个小于指定目标值的值。挖掘使散列成为一种快速、单向和不可逆的算法。找到一个有效的随机数需要时间,因为(矿工)没有可用的线索来帮助他们找到一个足够小的哈希,而找到一个比目标值更小的哈希的唯一方法是计算大量的哈希:在比特币中,目前有超过10 ^ 25(10的九次方)个哈希。当发现一个nonce随机数时,需要1秒钟来验证它,然后这个新的块将在网络中广播,以形成最新的共识和区块链。
在区块链上存储数据是永久性的,但在区块链上存储大量数据是不明智的。实用的区块链存储方法是在区块链上存储固定大小(通常很小)的数据,我们称之为“数据哈希”。区块链的一个应用是作为时间戳服务。假设你想证明一张现在的图,并且确定它不是未来编造的。您可以将图像的哈希存储在区块链上。一年后,当法官询问这张图片是否真的存在于一年前时,你可以提供这张图片,然后法官可以对这张图片进行哈希处理,并与你存储在区块链上的哈希进行比较。
Hash方法还涉及更高级的例子,比如区块链的基本面—— Merkle树,可扩展性和轻钱包创新。用于安全识别的
安全加密散列函数是单向的、快速的和抗冲突的。将这些特性结合起来后,它们会处理任何类型的输入,然后产生一个固定大小的输出,这个输出被称为hash。作为任何数据的标识,哈希都是非常有用的。长度为256位的哈希表示天文数字的组合。将它们作为全球物联网的唯一标识符就足够了。即使在纳米技术的规模上,这些哈希也可以写成64个字符(十六进制),这使得它们足以用作标识符。在区块链,散列被用作块、交易和地址的标识符。
Hash还享有安全性和隐私性的优势。如果一首歌以数字格式录制,歌曲的哈希记录在区块链上,那么没有人可以声称他们是第一个创作这首歌并生成哈希的人,他们也不会知道这首歌本身:有人不能写一首歌或篡改哈希。类似地,除非指明了歌曲或其他数字财产或数据,否则在区块链上仅显示散列本身。所有权记录也可以存储在区块链上。举个简单的例子,车辆注册办公室可以在区块链上存储汽车数据散列(照片、VIN、牌照)。只有车主、保险公司和政府才知道这辆车的实际细节。
来设计密码哈希函数需要艺术和科学的结合。为了证明它们的安全性,需要高等数学和计算机科学。区块链是第一个充满哈希的用户界面,是为广大人民群众提供的。良好的用户体验背后隐藏着许多哈希,但正如我们今天看到的各种id和序列号一样,有时哈希是取代长篇大论的最佳标识符。随着加密技术和物联网技术越来越普及,希望以后能看到更多的64字符哈希!
原文:https://medium.com/@ CONSENSYS/区块链-挖方-哈希-7F4746CBD 66b # 94m1n6n3b作者:Joseph Chow(ConsenSys)。图:波格丹一世伯恰翻译:洒脱快乐投稿来源(翻译):资讯(http://www.8btc.com/blockchain-und…宁宁-哈希)[X]