私钥公钥学习心得(二)比特币与支付宝

in #cn6 years ago (edited)

上一篇文章,我写下了公钥、私钥、数字签名与数字证书之间的关系。

大概总结一下就是下面三项:

1 公钥与私钥是一对秘钥。私钥用来加密,公钥用来解密。私钥自己保存,公钥是公开的。可以通过私钥推导出公钥,公钥却不能推导出私钥。
2 数字签名的意思就是将待加密内容哈希运算得到一个哈希值,用私钥进行加密这个哈希值。如此便可以通过签名验证内容是否是真实未被篡改过的。(具体可以查看上一篇文章的东邪西毒的例子)。
3 数字签名只是保证了内容的完整性,数字证书则表明了此数字签名属于谁。通过数字签名和数字证书则可以验证某一段内容是否被修改过以及是否来自于某人

这篇文章我将继续写下我的学习心得,主要是这两个方面:
一、公钥、私钥、非对称加密算法与哈希运算。
二、比特币体系与支付宝的区别(继续用东邪西毒的例子来写)

一、公钥、私钥、非对称加密算法与哈希运算

先简单介绍一下,私钥与公钥是一对秘钥,公钥是根据私钥进行数学运算得到的(比如椭圆曲线算法)。私钥可以是随机产生的,只要有一个足够随机性的熵源。可以利用系统随机数,也可以自己抛硬币产生随机数。那么私钥可以推导公钥,公钥不能推导私钥如何理解呢?可以想象有两个非常大的质数,可以很容易算出这两个质数的乘积。当质数足够大的时候,拆分这个乘积找到这两个质数就会变得非常困难。
说人话:抛硬币256次,得到一个私钥,再进行运算得到公钥,公钥无法计算得到私钥。

非对称加密算法:利用公钥私钥对来进行加密解密的算法,比如RSA算法,除了加密货币之外,上段时间爆发的勒索病毒采用的也是这种加密算法。
说人话:非对称加密算法就是采用了这种公钥私钥方式的的加密算法。

哈希运算:指的是将待加密内容进行数学运算,得到指定长度的加密串。其一个最重要的特点便是无法进行逆运算。比如MD5算法可以将任意长度的内容,加密为长度为16个字节的值。CRC32算法可以将任意长度的内容,加密为4个字节的值(一个字节是八个二进制位)。但是CRC32相对于MD5来说更容易发生碰撞。
说人话:哈希运算就是对文件内容求得一个固定长度的指纹(或者理解为拍了张照片)

二、比特币体系与支付宝的区别

第一代贸易交换(银票纸币年代)
东邪和西毒都很有钱,但是当时条件有限,只能用银票来交换。每次西毒想找东邪买几本九阴真经来看,便需要长途跋涉,把钱送到东邪手里,再从东邪手里拿到九阴真经,极其不方便。

第二代贸易交换(网银支付宝年代)
过了一段时间,东邪西毒进入了网络社会,这时候中原大地出现了一个叫做银行的机构。银行给了东邪西毒一个建议:你们二位把钱都给我,我给你们保存着。以后你们交易的时候,告诉我医生就好了。就这样,西毒又想找东邪买九阴真经了,然后他这样做:

(1) 西毒给银行打电话,告诉银行给东邪转100块钱。
(2) 银行便从西毒的钱袋子里拿了100块钱放到东邪钱袋子里,然后告诉的东邪,西毒给了你100块钱。
(3) 东邪收到钱,把九阴真经发给了西毒。

第三代贸易交换(去中心化的区块链交易(比特币体系))
我们想想,第二代确实很方便了。但是同样出现了几个问题:1 我们的钱并不属于我们自己,我们能拿到的只是一个虚拟的数值,银行拥有着对我们财富生杀予夺的权利。2 银行的拥有铸币的权利,每一次铸币都可能是对我们财富的剥夺。 3 整个体系运行在不透明的机制下,我们对于银行毫无隐私,银行对于我们来说却是无比神秘,不透明就容易出现腐败。东邪和西毒开始思考如何摆脱银行的控制,于是他们想到了利用非对称加密算法来声明自己的财富所有权。

于是,他们每个人生成了自己的私钥和公钥,他们的交易便有了如下几步:

(1 )西毒首先用自己的私钥加密了自己的钱包。只有自己的私钥才能打开钱包,世界上除了西毒自己没有人能够控制这笔钱。
(2)西毒想给东邪打100块钱,西毒便用自己的私钥打开钱包拿了100块钱,然后写一条消息(将这100块钱给东邪),再用自己的私钥对这条消息进行数字签名。然后把签名好的消息和自己的公钥发到网络上。
(3)这时候网络上出现无数个节点,就是旷工。这些旷工收到这个交易之后,拿到里面的公钥,然后用公钥去验证消息的真实性,发现确实是西毒发的,交易有效,根据这条消息,便有100块钱流入到了东邪的账号里。
后来,东邪西毒发现这种方法,自己的钱只有自己能够控制,确实比之前的神秘的网络银行更加安全透明,于是推广给了更多人使用。

注:文章中没有设计到挖矿,和比特币的交易过程有些出入,希望大家理解。
前一篇文章:公钥、私钥学习心得(一)

https://steemit.com/cn/@mooninwater/67d3ho / url

btc.jpeg

Sort:  

很通俗的普及!

私钥与公钥是一对秘钥

很生动形象

Coin Marketplace

STEEM 0.25
TRX 0.11
JST 0.031
BTC 62166.63
ETH 3021.89
USDT 1.00
SBD 3.72