vlambda博客
学习文章列表

聊聊比特币(一):哈希算法、数字签名与非对称加密





上周盈利创历史新高,同时已将持仓的指数、lof和场外基金全部卖出,具体成交价见微博上周的交割单(数据过多就不贴图了)。之前的文章里多次提到过4月之前要清仓,因为准备拿私募牌照大半年不能操作,至于后市能涨到何种高度以及诸位的清仓点位之前的文章已经分析过了,有兴趣的朋友可以看看。



最后一次贴仓位图:

聊聊比特币(一):哈希算法、数字签名与非对称加密



 
比特币的价格已经站上56000美元/枚,有多少看好它的人就有多少看衰它的人,接下来的几期文章让我们客观的了解一下比特币的原理和应用,至于它到底价值几何各位自己评判。

要了解比特币就得先了解一下它所使用的 SHA256算法 ,它属于hash函数的一种, 那么这个hash函数又是个啥玩意?

简单点说,它可以把一个字符串通过一定的运算转化成二进制“数字摘要”的形式。举个例子,假设我拟定这样一个函数:如果接收到的字符串包含数字,则输出的二进制结果第一位为0,反之第一位为1;如果接收到的字符串包含非数字,则输出第二位为0,反之第二位为1。

比如我要hash一下sfihh这个字符串,按照上面的规则输出的二进制结果就是“10”;字符串23490f经过哈希运算后的结果就是“00”。

我只是举了一个简单的例子方便大家理解,真实的哈希函数复杂程度之大很难用文字语言描述,不过通过上面这个例子相信大家会发现哈希函数有这样一个特点:正向算很容易,但是你想反向算很难。还是上面的例子,假设我知道了函数值“00”,你想让我往前推算自变量,有可能是“23490f”,也有可能是“8840ghd”,还有可能是“56pph”。一言以蔽之,验证可以,推算几乎不可能。

比特币所使用的SHA256算法和上面举的例子类似,给定一组字符串,经过SHA256运算后得到的函数值是一组固定位数为256位的二进制数字,同样具有正向算函数值简单,反推自变量很难的特点。这个SHA256函数不仅可以用来设计数字签名,而且和比特币挖矿息息相关,具体关于挖矿的部分咱们下期再讲,接下来聊聊数字签名。



在传统的身份认证领域,“签字”、“指纹识别”之类的手段是最常见的,但是在电子支付中,用传统手段太容易造假,甭管是签名还是指纹,copy一下再粘贴一下就能糊弄过去。

比特币应用的 数字签名 复杂太多,在比特币的用户进行注册的时候,系统会随机生成一个随机数,通过这个随机数会生成私钥、公钥和地址。其中私钥是用户私有的密钥,这玩意需要小心保管不能让任何人知道,如果私钥丢了,那么你钱包里的比特币也就丢了。公钥和地址是公开的,比如你要支付比特币,你就需要把你的公钥和地址一起广播出去。 那么私钥和公钥具体是干啥用的呢?

简单点说,私钥用来加密,公钥用来把私钥加密后的字符串进行解密。 因为加密和解密的算法不同,这种加密方式就叫“非对称加密 因为只有你掌握可以加密的私钥,因此只有你自己可以加密,而任何人都能根据你加密的信息进行解密。有很多朋友听到这里可能疑惑了,大家都可以根据公钥来解密你的信息,那么还有必要加密吗?

看似多此一举的动作其实是为了“防伪”。啥意思呢?假设你支付了一枚比特币给小明,然后你要在网上广播这条消息让大家给你记账,那么大家怎么验证这条消息确实是你发出来的而不是坏人伪造的呢?

首先你要把付给小明1枚比特币这串字符做一下SHA256运算,运算完得到的函数值记为“数字摘要1”,然后用你独有的私钥将数字摘要1进行加密,得到一串“密码1”。

然后你要在全网进行广播,广播的内容如下:你支付给小明1枚比特币这点事、你的公钥和你的“密码1”。你希望大家把你的交易记录记账然后做成新的区块,大家就得针对你发布的信息进行“防伪验证”。

首先大家会对你发布的信息“支付给小明1枚比特币”这串字符hash一下,得到的函数值为“数字摘要1”(和你计算的结果一样),然后将公钥和“密码1”进行配对解密,得到“数字摘要2”,然后对比摘要1和摘要2,如果哈希值相同,则证明这玩意确实是你发布的信息,然后开始给你干活(记账做区块)

这就是数字签名的原理。

好了,本期暂时聊到这,下期聊聊区块链和去中心化那点事。
 


大白话讲专业事儿

专注金融领域科普

新浪微博:@朱晓光指数投资

知乎 : 朱晓光指数投资




“在看”我吗?