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