摘要:比特币的私钥、公钥、地址是什么?在比特币中,经常会出现三个词:私钥、公钥、地址。它们是什么意思?他们是什么样的关系?理解它们之间的联系和区别是理解比特币的基础。
中本聪的身份一直是个谜。自2008年中本聪发表比特币白皮书以来,出现了许多“中本聪”。其中,最著名的是克雷格赖特,也就是我们取笑的青本聪。当时,他站出来公开声明他是中本聪,可以提供中本聪的私人钥匙。结果大家都知道。
上面提到的私钥是一个类似如下的字符串:5 kyzdueo 39 z3fp RTU x2 qbwgnnp 5 ztd 7 yr 2 sc 1j 299 sbcnwjss
支持比特币协议的应用可以把这个字符串转换成比特币的私钥,再转换成公钥,得到一个比特币地址。如果这个地址上有对应的比特币,你可以用这个私钥在上面消费比特币。看上面那串,没有对应的比特币。这是我一个新钱包里的地址。在复制出私钥后,它已被删除。只要里面没有比特币,对我就没有影响。大家要注意的是:不要泄露自己的私钥,也不要保存在云盘或本地硬盘上,或者通过聊天工具等发送。这可能会造成损失。最好写在纸上,放在安全的地方。当然,如果里面什么都没有,那就另当别论了。
说了这么多,私钥是怎么生成的?Emmmmm我说的是随机生成的。会有人打我吗?
实际上,私钥本质上是一个随机数。私钥是一个32字节的数组,一个字节等于一个8位二进制,一个二进制只有0和1两个值。
这样一些没学过计算机的同学可能就不懂了,就直接说结论吧。
私钥总数接近2的256次方。这个数字已经超过了宇宙中原子的总数,不可能遍历所有的私钥,耗尽整个太阳的能量。这一点是关于密码学中私钥的安全性。当然不是说不能出现重复的私钥,而是说不可能通过遍历,或者其他方式找到特定的私钥,而不是花比特币在没有私钥的地址上。私钥的安全性在数学上得到保证。
私钥是按照一定的规则格式化32位字节数据生成的,32字节的数组由256个0或1组成。如果显示,不仅识别率低,而且私钥太长。
所以私钥串就是把原来的随机数进行一定的转换,转换成识别率高的形式。以下私钥是32字节数组的Base58转换。
5 kyzdueo 39 z 3 fprtux 2 qbbwgnnp 5 ztd 7 yyr 2s C1 j 299 sbcnwjss
Base58是比特币使用的一种独特的编码方式,主要用于生成比特币的钱包地址和私钥。与Base64相比,Base58不使用数字“0”、大写“O”、大写“I”、小写“L”以及“”和/”符号。这样做的主要原因是容易被肉眼识别,打字时不容易出错。(百科)
所以,为了让人眼容易识别,我们通过一种叫做Base58的编码方法,将原本长而难记的字符转换成了更易识别的字符串。但是,这串转换后的字符输入起来相当困难。这时,私钥也可以转换成其他形式,比如文字。这是你在钱包里看到的助记符。
私钥基本就完了,是个比较简单的概念。如果对理论感兴趣,可以查资料。
我们来谈谈公钥。
实际上,公钥是从私钥转移过来的。在这个过程中,使用了前面提到的算法——椭圆曲线加密算法。
至于算法的过程,就不讨论了,涉及计算和理论。
有一张图,讲的是从私钥到公钥的过程。
椭圆曲线加密法是基于椭圆曲线理论,利用椭圆曲线方程的性质生成密钥,而不是传统方法中使用大素数的乘积。其特点是:密钥长度小,安全性能高,整个数字签名耗时少。
这里所说的数字签名技术简称DSA,全称是数字签名标准。在DSA数字签名和认证中,发送方用自己的私钥对文件或消息进行签名,接收方在收到消息后用发送方的公钥验证签名的真实性。
公钥谁都可以得到,私钥只能自己保管。经过一系列的数字签名操作,公钥就会得到比特币钱包的地址,也就是大家常说的。因为比特币地址可以从公钥计算出来,所以我们经常把这两兄弟搞混。都是指同一个概念,只是比特币钱包地址是另一种格式的公钥,只是两兄弟的衣服不一样。区别在于外在的表现形式。
我们看到的比特币地址一般都是经过Base58编码处理的,地址的生成比较复杂。看,Base58又出了。整个过程比较复杂,这里就不赘述了。
整理最后一个线程:私钥3354公钥3354比特币钱包地址
现在你应该知道私钥、公钥和比特币地址的关系了。中间插了很多话题,下来可以多了解一下。同学们可以就今天的内容提问,我会尽力解答。好了,今天的课就到这里。下次再见。
(作者:SCRYINFO,内容来自链家开放平台“德得好”;本文仅代表作者观点,不代表链家官方立场)