区块链科普系列第19天:没了它,区块链就成了没骨头的人
文/杜豆豆
如果区块链是一个人,那么密码算法就是他的骨骼。区块链技术包含的内容很多,比如P2P、数据库、密码学等等,但密码算法是重中之重。原因不说自明,因为它是用来保护你那些各种各样的“贵重”资产的,比如:货币、股票、版权、交友信息等。
典型的密码算法有三种:哈希算法、公开密钥算法、编码/解码算法。
1、什么是哈希算法?
哈希算法在区块链系统中的应用相当广泛,几乎贯穿到区块链系统的方方面面:比特币通过公钥计算出钱包地址需要使用哈希算法,梅克尔树结构本身就是一颗哈希树,甚至是以太坊中的挖矿算法也使用了哈希算法。
那哈希算法究竟是啥呢?说白了,就是通过一种方法,将一段任意输入的字符串计算出一个单独的“序列号”,而整个过程是单向的,即无法再通过一个算法还原出原始数据。它能够起到一个类似于身份证号的作用,非常适合一些身份验证的场合。
为保证安全性,哈希函数需要具备3个条件:抗冲突、信息隐藏、可隐匿性。
举个例子,你买张电影票,座位号不能和别人时一样的,这就是抗冲突。你发个信息,不能被别人半路截获了,这就是信息隐藏。人民币上的各种防伪手段,比如水印、安全线、雕刻头像、荧光等,让做假币的人知道输出的是什么样,但不知道使用何种原料和工艺造出一模一样的来,这就是可隐匿性。
2、什么是公开密钥算法?
公钥和私钥即相当于区块链中的两把钥匙。对于一段需要保护的信息,通常使用公钥来进行加密,用私钥完成解密,这种加密方法就称之为公开密钥算法。
比如,你和GOOGLE通信时,可以使用GOOGLE公开提供的1024位的公钥加密信息,加密后的密文只有使用GOOGLE私藏的私钥才可以解密。
常见的公开密钥算法,简单介绍两种:椭圆曲线加密算法、RSA加密算法。
自从非对称加密算法诞生以来,人们发现一些数学函数很适用这种算法,比如椭圆曲线加密算法。这些数学函数具有某种难度:由输入算输出很容易,但是从输出计算输入几乎不可能。比特币是使用了椭圆曲线加密算法作为公共密钥编码的基础,事实上在很多区块链系统中都是使用椭圆曲线加密算法。
RSA加密算法既能用于加密,也能用于数字签名,是目前最流行的公开密钥算法。RSA的公钥和密钥是一对大质数,从一个公钥和密文恢复明文的难度,等价于分解两个大质数之积,这是被公认的数学难题,提出20多年来,经受住了各种攻击考验,被认为是目前最优秀的公钥方案之一。
3、什么是编码/解码算法?
计算机存储和处理的都是二进制数据。为了简洁,实际上使用最多的是二进制的一个变种--16进制。比如笔者的名字叫豆豆,中文拼音是doudou,在计算机里存储的就是一长串有数字有字母的字符串。相比较而言,人们当然更容易记住doudou,而长串的16进制代码就很难。
比特币地址,都是十六进制的数,如果不做转换,打印出来根本看不懂。只有把这些代码转换成对应的文本,你才会理解它的意思。
以下,用文本来表示十六进制数据的编码方式,我们介绍基本的3种:
(1)Base 64
Base 64是一种用64个字符来表示任意二进制的方法。比如,exe、jpg、pdf等文件都是二进制文件,用文本编辑器打开都是乱码。如果用Base 64,就可以将二进制编码成字符串的 格式,这样就可以将该文件用文本打开查看。但是这种方法,因为对应的是固定的编码规律,因此很容易解码。
因此,Base64编码主要用在传输、存储、表示二进制领域,严格地说,不能算得上加密,只是无法直接看到明文。
(2)Base58
顾名思义,Base58是基于58个字母和数字组成的,有了Base64的基础,我们就比较容易理解Base58了,实际上就是Base64的一个子集。
不同点仅在于,Base58是Base64去除了几个看起来容易混淆的字符以及容易导致转义的/和+。
(3)Base58Check
在二进制数据的传输过程中,为了防止数据传输的错误,保护数据安全,通常会加一个校验码。通过校验码的配合可以发现数据是否被破坏或者是否在发送时输入错误了。Base58Check就是Base58加上校验码,或者可以说是Base58的一种编码形式。
比如,在比特币系统中生成钱包地址的时候就使用到了这种编码形式。比特币地址采用了0×00作为版本信息,然后再计入编码内容字符串的哈希值,通常只要取得哈希值中的4个字节就可以了,加到一起后,然后再整体进行Base58编码。
经过整理编码后的数据在传输过程中如果有发生损坏或者篡改,接收方在得到数据后,会对原始数据进行同样的校验码计算,并且和接收到的结果中的校验码进行比较。由于哈希算法的特点,只要原始数据有任何更改,计算出的哈希值都会发生变更,因此只要校验码不一致就说明数据不是合法的。
(本文出自杜豆豆《白话区块链》读书笔记的部分摘录。)
明天分享:《那些绝妙的密码算法应用,你知道多少?》
(未完待续)
原创不易,非授权不得转载,转载请注明出处。如果您觉的文章有用,别忘了在文末点赞哦。
读更多好书,请访问我的文集:《一生必读的万卷好书》
欢迎加入“万卷好书读书会”:在这个群里,大家可以分享电子书,交流读书心得,以文会友,自由点赞支持。目前该群已超过100人,需要群主发邀请才能进,有兴趣的简友请加微信dudoudou189联系我。读书会座右铭:在浮躁的时代,安心读书写作,养育心灵。
我已晋升五十万钻高级合伙人,欢迎使用我的专属会员推广链接://www.greatytc.com/mobile/club?ref=3debb0de。订阅会员,享受最优惠福利。