重新创造比特币5:公钥和私钥

作者:何岩,由 recreating.org发行。

1.公钥和私钥 #

那么用户的公钥和私钥又是如何生成的呢?

这里正是采用非对称加密真正精髓之处,用户的公钥是由私钥计算得来,而用户的私钥则反直觉的由用户自己生成。

用户如何自己生成一个私钥呢?
(备注:公钥私钥更加详细的技术讲解可以阅读aaron67的文章:[学习笔记] 比特币的私钥和公钥)

私钥的本质是一个数字,公钥的本质也是一个数字,如果把任何数字当成私钥,都可以利用椭圆曲线加密算法生成这个数字对应的公钥,即,Function椭圆曲线加密算法(私钥)=公钥

5-1.png

椭圆曲线加密算法

如果让用户随机生成数字,并且数字的随机范围足够大,就可以避免两个用户生成了相同的私钥,即,私钥冲突。

多大的数字够用呢?

答案是2的256次方。

创建私钥本质上是“取得一个1到2的256次方之间的数字”。

你可以通过投256次骰子,并且用铅笔和纸张将结果记录下来。

结果看起来是这样:

111110010111110010001
00110101010101011001
111000011010000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
000000000000000
0000000000000000
0000000000000000

一共256个二进制的字符。为了让它看起来短点,我们将其转换成十六进制,这样就减少到了64个字符,每位代表4个bit。

(备注:一个二进制的数字就代表着1bit。再进一步解释bit的定义是:可以让50%概率的事情变为100%的确定性的信息,这个信息所等价的能量就是1bit。例如:在二进制中,下一个我要写的数字只能在0或1中选择,这时候下一个数字的概率就是50%,如果我写出来了1,那么这个1就是将50%的不确定性,变成了100%的确定性,这个1代表的就是1bit的能量,同理如果我选择的是0,这个0同样代表着1bit的能量,也就是说将不确定性变为确定性,需要信息,而信息的形成需要能量,1bit就是表示能量的大小)

转换成十六进制看起来是这样:

f97c89aaacf0cd2e47d
dbacc97dae1f88bec49
106ac37716c451dcdd0
08a4b62

公钥是根据私钥计算得来,所以公钥也是一个很长的数字,用十六进制表示是这个样子:

b4327ae841ca6cfd120
3cc6e135a48d893cbfb
2c388c0f64a79694199
cc9b4cb

为了方便使用,如果想再短些,我们还可以将其转换成64进制(base64)看起来是这个样子:

1BJhat1AMGYbT9HYJxV
ekoCaPaqB9ZyTyF

2进制:1个字符对应的范围是0~1,有2个选择。

16进制:1个字符对应的范围是0~15,有16个选择。它由0-9,A-F组成。

64进制:1个字符对应的范围是0~63,有64个选择。64进制几乎用上了我
们键盘上的所有按钮。

理论上,如果我们制造一个按钮超多的键盘,什么星星,三角,方块,菱形,各种新符号,如果能凑齐128个,我们就可以实现128进制。只不过因为我们全球共识的通用字符也就比64多一点,所以就到64进制为止了。

(备注:现实世界的比特币系统用的是base58,是基于base64的改良版,技术细节推荐阅读:aaron67的文章[学习笔记] 比特币的地址)

2的256次方是一个难以想象的大数,以十进制表示,它大概是10的77次方,而宇宙的可见部分,其组成也就大概10的80次方个原子。所以,通过随机碰撞出相同私钥的概率可以小到忽略不计。

正是由于用户不通过服务端生成自己的私钥和公钥,服务端不会预先知道任何用户的存在,所以才可以舍弃账户模型,从根本上去掉了用户注册。
舍弃了用户注册和账户模型,服务端就变得难以限制用户的使用自由。

用户以公钥示人,如果你不说没人知道某个公钥是谁的,除非你俩之间发生了交易,这种交易易名的方式实现了对个人隐私的保护。

就这样,Bitcoin朝着交易的更加自由,迈出了它的第一步!

(备注:这里要注意,Bitcoin的隐私保护是通过易名而非匿名,关于这个概念可以阅读邱少贤的《比特币重生-比特币隐私模型

夕阳透过窗子洒进了咖啡馆,它将屋子里的人都镀成了金色。

中本聪还在全神贯注的盯着屏幕,敏捷的敲击着键盘。

Gilfoyle在一次又一次的投掷着硬币,每次硬币落到桌子上,他就用铅笔记录一次结果。

中本聪一边盯着屏幕,一边问道:“你在干什么?”

Gilfoyle:“我在生成我自己的私钥”。

中本聪:“用计算机的随机算法生成,一秒钟就能搞定!”。

Gilfoyle:“我不相信计算机,我只相信硬币”。

图片 1.png

生成私钥

参考: #

aaron67‘blog:[学习笔记] 比特币的地址

下一篇:重新创造比特币6:第二个版本上线啦

相关链接 #

重新创造比特币:前言

Part One : 交易
重新创造比特币1:从一个简单的web交易系统开始
重新创造比特币2:第一个版本上线啦
重新创造比特币3:舍弃账户模型
重新创造比特币4:数字签名
重新创造比特币5:公钥和私钥
重新创造比特币6:第二个版本上线啦
重新创造比特币7:UTXO
重新创造比特币8:基于UTXO的系统重构
重新创造比特币9:万物皆交易
重新创造比特币10:交易脚本

Part Two : 群系统
重新创造比特币11:群系统(上)
重新创造比特币12:群系统(下)
重新创造比特币13:P2P网络
重新创造比特币14:交易的同步
重新创造比特币15:账本的同步
重新创造比特币16:Block Chain
重新创造比特币17:网络的弹性
重新创造比特币18:工作量证明(上)
重新创造比特币19:工作量证明(下)
重新创造比特币20:分叉之重组与分裂

书面设计矢量图_36.png

英文版Amazon.com在售 : Recreating Bitcoin

BSV打赏:
1Djc4TdVBi8urzmSXKHwg8cpEAYKcRQxgY

©2019 - Recreating.org all rights reserved

 
2
Kudos
 
2
Kudos

Now read this

Recreating Bitcoin 1:Start over with a Simple Web Transaction System

Prologue # For great creation, recreating is worship. Welcome to the world of Bitcoin !!! WHAT is the book really about? Position, concept position, concept position of Bitcoin. WHY position? Because the position is clear, understanding... Continue →