区块链
在比特币中,经常出现三个词:私钥,公钥和地址。它们是什么意思呢?他们之间又有什么样的关系呢?搞清楚他们之间的关系和区别,是了解比特币的基础。
今天看群里有同学说这里大多数人都不懂技术,今天我将用比较易懂的方式来告诉大家。
就在今天上午对吧?群里一位叫“磊哥”的同学说他的手机掉了,换了新手机,但重新登陆imToken时,却忘记助记词了,只有私钥……幸好私钥还在啊,不然可就惨了。
中本聪的身份一直以来都是个谜,自从2008年中本聪发表了比特币白皮书后,就出现过很多个“中本聪”。其中最出名的,莫过于克雷格•赖特(Craig Wright),也就是我们调侃的澳本聪,当时他站出来公开表示他是中本聪,且能提供中本聪的私钥。结果大家都知道了吧。
上面提到的私钥,就是像下面这样的一段字符串:
5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss
支持比特币协议的应用都可以把这段字符串转换成比特币的私钥,再转换出公钥,再得到一个比特币地址。如果该地址上面有对应的比特币,就可以使用这个私钥花费上面的比特币。你们看上面那段字符串,就是没有对应比特币的。这是我新建的一个钱包中的地址,在复制出私钥后,已经删除,只要里面没有比特币,对我是没有任何影响的。而大家要注意的就是:别把你们的私钥泄露出去,也不要保存在云盘或本地硬盘、通过聊天工具发送等,这些都有可能造成损失。最好是写在纸上,保存在安全的地方。当然,里面啥都没有的话,就另说了。
说了这么多,那私钥是怎么生成的呢?emmmmm我说是随机生成的,会不会有人打我啊?
其实,私钥本质上就是随机数。私钥由32个byte组成的数组,1个byte等于8位二进制,一个二进制只有两个值0或者1。
这样说,可能有些没学过计算机的同学就不太懂了,那直接说结论吧。
私钥的总数是将近2的256次方个。这个数量已经超过了宇宙中原子的总数,想要遍历所有的私钥,耗尽整个太阳的能量也是不可能的。这一点,说的是私钥在密码学上的安全性。当然,并不是说不可能出现重复的私钥,而是说不可能通过遍历的方式找到某一个特定的私钥,或者通过其它的方式找,而不通过私钥就能花费地址上面的比特币,私钥的安全性是由数学上保证的。
私钥字符串是按照一定的规律从32位byte数据格式化生成的,32个byte的数组是由256个0或者1组成的,如果显示出来,不仅仅是识别率不高,而且私钥太长。
因此私钥字符串就是对于原始的随机数进行一定的转换,转换为识别率高的形式,下面私钥的是对32个byte数组就做了Base58的转换。
5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss
Base58是用于比特币中使用的一种独特的编码方式,主要用于产生Bitcoin的钱包地址和私钥。相比Base64,Base58不使用数字“0”,字母大写“O”,字母大写“I”,和字母小写“l”,以及“+”和“/”符号。这样做的主要原因是为了肉眼容易识别,在输入的时候不容易打错。(百科)
所以为了便于人眼识别,我们把原本很长又不好记的字符,用一种叫做Base58的编码方式,转换成了一段更易识别的字符串。不过转换后的这串字符,输入起来还是挺费劲的。这时候,也可以把私钥转换其他形式,比如以单词的形式。这就是大家在钱包中看到的助记词。
私钥大致说完了, 都是比较简单的概念。大家对理论有兴趣可以去查资料。
下面来说公钥。
公钥实际上是由私钥转来的,这个过程,使用了之前提到的一种算法——椭圆曲线加密算法。
至于算法的过程,我们就不探讨了,涉及到计算以及理论。
给大家看一张图,其中讲到了私钥到公钥的过程。
椭圆曲线加密法以椭圆曲线理论为基础,利用椭圆曲线等式的性质来产生密钥,而不是采用传统的方法利用大质数的积来产生,其特点是:密钥长度小,安全性能高,整个数字签名耗时小。
这里提到的数字签名技术,简称DSA,全称是Digital Signature Standard,在DSA数字签名和认证中,发送者使用自己的私钥对文件或消息进行签名,接受者收到消息后使用发送者的公钥来验证签名的真实性。这里有一个非常便于理解DSA的网站,我发给你们
“What is a Digital Signature?”
http://www.youdzone.com/signature.html
公钥是任何人都可以获得的,而私钥只能你们自己保留好,公钥经过一系列数字签名运算就会得到大家常说的比特币钱包地址。因为由公钥可以算出比特币地址,所以我们经常会把它们两兄弟搞混。它们都是指的同一个概念,不过比特币钱包地址是另一种格式的公钥,但是两兄弟的衣服穿的不一样。区别在于外在表现形式。
我们看到的比特币地址一般都是Base58编码处理的,地址的生成比较复杂,看吧,Base58 又出来了。整个过程比较复杂,这里就不细讲了。
全部0条评论
快来发表一下你的评论吧 !