您的位置 首页 比特币资讯

私钥,公钥,地址是如何生成的?

那么很多人会有一个疑问。在我使用钱包的时候,从来没有见过类似私钥和公钥的的东西,只见过地址。他们是怎么来的呢?

这一节就跟大家讲讲私钥,公钥,地址是如何生成的。

本文以比特币的技术为案例,请注意:比特币 ≠ 区块链

 

私钥,公钥,地址是如何生成的?插图
  私钥是怎么来的?

原始的私钥格式是256位的二进制(2的256次方),大概长下面这样:

1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0

私钥本质上是数字,相当于从1 到2^256(2的256次方)之间选一个数字。

硬币正面为1,反面为0,抛硬币256次,记录下来全过程就相当于生成了一个私钥。但是大家的时间是宝贵的,肯定不能通过抛硬币来生成私钥。

私钥都是由钱包来生成的,而不是人设定的

由于私钥的原始格式非常长,直接由用户设定是非常麻烦的。所以这个工作由钱包来完成了。为了保证私钥的安全性,钱包会“非常随机”的来生成私钥。

所以大家在创建钱包的时候,是不需要设定私钥的,而是设定“转账密码”或者“开启APP的PIN码”之类的密码,他们并不是私钥!

币姐提示

目前很多钱包都是HD钱包(什么是HD钱包?)只需要备份助记词即可,简化了创建新私钥和备份私钥的方式。

注币姐,下一节会详细讲解HD钱包。

公钥是怎么来的?

上一节( 币姐解读区块链05:密钥,私钥,公钥傻傻分不清楚? )我们已经讲了:

公钥:由私钥生成的。公钥的作用是跟签名配合用来证明“我就是私钥的主人。

公钥是需要公开出去的,所以公钥需要具备几个特性

 

私钥,公钥,地址是如何生成的?插图1
  公钥必须由私钥生成,这样才能证明“我就是私钥的主人”

公钥不能倒推得出私钥,不然相当于把私钥告诉别人

私钥通过椭圆曲线加密生成了公钥。

之所以用椭圆曲线,是因为他满足了上面提到的2个特性:

私钥可以通过椭圆曲线加密非常容易的创建公钥,他俩具有一一对应的关系。

通过公钥来求出私钥是非常困难的。

椭圆曲线加密是一个很复杂的概念,币姐就不详细讲解了,感兴趣的可以看看——什么是椭圆曲线加密?

币姐说明

椭圆曲线加密有多安全呢?

RSA加密算法是生活中常用的加密手段,大家登陆网银,支付宝的时候就会用到。这种加密算法已经用了很多年,历史证明RSA是非常安全的(至少到目前为止)。

如果把两者进行比较的话:

假如破解RSA算法需要的能量只够烧开一瓢水,

那么破解椭圆曲线密码需要的能量够把整个地球上的水都烧开。

地址是怎么来的?

地址相当于银行卡,用来发送和接收数字资产。比特币地址是一个由数字和字母组成的字符串,可以随意公开出去的。大概长这样:

1J7mdg5rbQyUHENYdx39WVWK7fsLpEoXZy

 

私钥,公钥,地址是如何生成的?插图2
  比特币地址可由公钥经过单向的加密哈希算法得到。

跟椭圆曲线算法类似,哈希算法也具有2个特性:

公钥可以很容易生成地址,且一一对应。

但是通过地址来求出公钥是非常困难的。

币姐说明

哈希算法并不是某一种具体的算法,而是一类算法的统称。就好像川菜和粤菜都是中餐一样。对于比特币来说,他采用了2种哈希算法 SHA256 和 RIPEMD160。

川菜(SHA256)和粤菜(RIPEMD160)都是中餐(哈希算法)

想了解哈希算法的更多说明,请查看——什么是哈希算法?

FAQ环节

什么是椭圆曲【比特币123】线加密?

什么是哈希算法?

在知道某个比特币地址的情况下,是否有可能通过破解私钥来攻破该账户?

总结

这节内容主要是讲解了私钥,公钥,地址是怎么来的:

私钥是非常重要的,但是由于其原始格式非常复杂,所以需要钱包来帮我们来生成,人工生成成本实在太高。

公钥是由私钥生成的,使用了椭圆曲线加密,非常安全。别人是无法通过公钥倒推出私钥的。

地址则是由公钥生成的,使用了哈希运算。通过地址倒推公钥也是不可行的。

关于作者: mexc.cc

发表评论

邮箱地址不会被公开。 必填项已用*标注