美文网首页
比特币源码研读(1)--私钥

比特币源码研读(1)--私钥

作者: caiklaus | 来源:发表于2018-04-29 16:29 被阅读0次

感谢在菜菜子等指导下,这是本人比特币源码研读第一篇。

私钥

私钥实际上是256位0或1组成的一串数字,范围是2的256次方,因为数量太大,无法遍历。但是私钥不能随意就找个256位的数字,必须通过足够安全的随机性算法来计算出来,否则很容易被黑客暴力撞中。但由于无法做到真的随机,只能依靠伪随机算法(PRNG)等方法接近真随机性来得到足够安全的随机数,再对随机数进行一次sha256哈希运算计算出私钥。

代码分析:

在key.cpp文件中,私钥通过调用GetStrongRandBytes方法来生成。

再查看random.cpp文件这个方法具体实现:

从这段源码可以看到随机数有几个来源,首先通过OpenSSL RNG拿到一个随机数,第二个来源是操作系统本身的随机数,如果硬件允许的话还可以加上硬件底层编程获取的随机数作为第三个来源。接着就把这些随机数合起来算出哈希值,这样得出的值才有可能作为一个私钥。

其中第三个来源GetHWRand是去年17年新加的方法,当时的github提交改动是(https://github.com/caiklaus/bitcoin/commit/b63be2c6852f055e60185aea93ceb4a1ef798c40#diff-35f8a407f8c21cda300a45f50b6e9c74)。在新增的方法里,可以看到__asm__这样的内嵌汇编命令,用来获取硬件底层的随机数。

由此可见,随机对于私钥的安全有多重要,难怪有人把随机比喻成比特币的“命根子”。

(http://www.8btc.com/random)

作者:区块链研习社比特币源码研读班,晓涛_Klaus

相关文章

  • 比特币源码研读

    forest21000版 比特币源码研读之一比特币源码研读之二比特币源码研读之三比特币源码研读之四比特币源码研读之...

  • 比特币源码研读(1)--私钥

    感谢在菜菜子等指导下,这是本人比特币源码研读第一篇。 私钥 私钥实际上是256位0或1组成的一串数字,范围是2的2...

  • 比特币源码研读之十一

    比特币源码研读系列已经发表了十篇了,通过这十篇源码研读系列让我对比特币源码及比特币运行原理有了进一步的理解,也让我...

  • 比特币源码研读之一

    比特币源码研读之一——区块链研习社 《比特币源码研读班》 一看文件夹结构 和 github编译依赖,分析的依赖库 ...

  • 比特币源码研读之一

    作者:区块链研习比特币源码研读班 菜菜子 一、源码下载 本文比特币源码下载地址为:https://github.c...

  • 比特币源码研读(1)—— 私钥、公钥和地址

    导读: 简单的于现实世界类比,比特币中的私钥=银行密码,比特币中的公钥=银行账号,比特币中的地址=收款方,...

  • 比特币源码研读(2)-main(1)

    比特币源码研读(2)-main函数(1) main函数介绍 Main函数位置:bitcoin/src/bitcoi...

  • 比特币源码研读之二

    区块链研习社比特币源码研读班今天研读第二,第三流程,SetupEnvironment和noui_connect函数...

  • 2018-06-13 区块链简单描述

    比特币 比特币钱包功能 比特币钱包,本质是一款软件 1、管理私钥和地址 (不需要联网) 钱包中的钱就是每一个私钥-...

  • 比特币及钱包的基础知识(笔记)

    1. 私钥: 2^256中的一个随机数。私钥决定了比特币的产权,如果想花掉一个地址上的比特币,必须得有私钥,没私钥...

网友评论

      本文标题:比特币源码研读(1)--私钥

      本文链接:https://www.haomeiwen.com/subject/ttqvlftx.html