美文网首页区块链程序员
不懂点技术, 你凭什么能在币圈挣钱 —— 比特币底层密码学

不懂点技术, 你凭什么能在币圈挣钱 —— 比特币底层密码学

作者: 程序猿的雕刻时光 | 来源:发表于2018-04-09 08:34 被阅读8次

身为一名程序员,是时候展示一波技术了。接下来的一段时间,我会用通熟易懂的方式讲解比特币的底层技术,让技术小白也可以看懂各种白皮书。

图片来自于网络

谈到虚拟数字货币就一定绕不开密码学,所以今天就给大家先讲解一下比特币相关的密码学。

在比特币白皮书里,两个最常用的密码学概念是哈希函数和公钥私钥。

哈希函数

传统的哈希函数就是将任意长度的数据映射到有限长度的域上,通俗的解释就是对一串数据M进行变换,输出成另一串固定长度的数据h,即h = H(M)。

图片来自于网络

除了数据h可以作为数据M的指纹外,在密码学中,哈希函数还有别的性质:

给定数据M很容易计算出数据h,但是给定数据h不能很方便的得到数据M,唯一的方法就是遍历数据M所有的可能。

很难找到两个数据,它们的哈希值是一样的。尽管很难,这样的两个数据还是存在的,因为哈希算法的本质是对数据的有损压缩。

从数学上讲,大家可以认为哈希函数是一个复杂的函数。

举个例子

h = 2M² 是一个函数,但是不是一个好的哈希函数呢?

因为给定一个h,我们可以非常容易地反向猜到M,那就不是一个好的哈希函数。

哈希函数的目的是,给定一个h,我没法容易地找到H的逆函数,进而通过这个逆函数找到M。

我只能通过暴力穷举所有的M,然后看H(M)是不是等于h,从而找到答案,这样才是一个好的哈希函数。

图片来自于网络

比特币使用的哈希算法采用双重SHA256算法,这是因为SHA1在2017年被birthday collision attack攻破,而SHA2被攻破也只是时间问题,而采取双重哈希算法可以有效抵御birthday collision attack。

SHA256(SHA256(BlockHeader))

公私钥机制

给定一个加密算法,每个个体都可以任意的产生一组公钥和私钥,通常是256bit或者512bit的字符串。

大概长成下面这个样子:

0 0 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 0 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 0 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 0 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

大家可以认为公钥和私钥,一个是锁,一个是钥匙,两者一一对应。

图片来自于网络

非对称加密算法:

乙方生成两把密钥,公钥,私钥。公钥是公开的,任何人都可以获得,私钥则是保密的

甲方获取乙方的公钥,然后用它对信息加密

乙方得到加密后的信息,用私钥解密

图片来自于网络

举个例子

小明和小红,小明想给小红写封情书,但是他不想让外人知道情书的内容。

我们假设小明情书的内容是“我爱你”, 小明第一步用小红的公钥对其进行加密。

公钥是所有人都知道的,所以小明也同样知道小红的公钥。

我们假设小红的公钥就是她的手机号:“138xxxxxxxx”。

加密过程涉及到加密函数Enc。这个函数用实际情书内容"我爱你"和小红的公钥 "138xxxxxxxx" 作为输入,得到一个输出, 叫做data_enc 。

data_enc = Enc(“我爱你", 小红的公钥)

我们假设Enc函数是将两个字符串合并后,将奇数字和偶数字对调,我们得到如下:

合并: “我爱你138xxxxxxxx”

奇偶对调: "爱我1你83xxxxxxxx"

小明将加密后的字符串,也就是”爱我1你83xxxxxxxx"发给小红。小红收到信息后,她需要用自己的私钥以及解密函数Dec,对这条信息进行解密。

data = Dec (“爱我1你83xxxxxxxx'',小红的私钥)

为了方便,我们假设小红的私钥也是”138xxxxxxxx“,解密函数的功能是,将输入的字符串的奇偶数对调,然后从字符串后面删除小红的私钥 。

奇偶对调:”我爱你138xxxxxxxx“

字符串删除(”138xxxxxxxx“): "我爱你"

这样一来,小红就知道,小明发过来的原字符串是 "我爱你"。

当然实际工程中,加密和解密函数都是非常的复杂函数,但基本原理是一模一样的,对于理解完全没有问题。

预告:后面会介绍数字货币是如何产生的?

我会持续分享和区块链相关的干货,还会有一些投资建议和挖矿技巧,让小白也能看得懂。想上车的小伙伴们请多多关注、评论、点赞、转发,非常非常感谢!

相关文章

  • 不懂点技术, 你凭什么能在币圈挣钱 —— 比特币底层密码学

    身为一名程序员,是时候展示一波技术了。接下来的一段时间,我会用通熟易懂的方式讲解比特币的底层技术,让技术小白也可以...

  • 区块链技术概要(整理)

    区块链是比特币的底层技术和基础架构。本质上是一个去中心化的数据库,同时作为比特币的底层技术。区块链是一串使用密码学...

  • 区块链世界的赚钱门道都有哪些?

    2009年1月3日比特币诞生,随着比特币在全球的火热,区块链作为比特币背后的底层技术,也逐渐被大众所熟知,不懂得的...

  • 从区块链技术映出的社会价值

    比特币 提到区块链技术,我们首先想到的就比特币,因为它是比特币的底层技术和基础架构。比特币技术一套密码算法。根据这...

  • 区块链和比特币关系

    区块链技术是比特币的底层技术,在早期并没有太多人注意到比特币的底层技术。但是当比特币在没有任何中心化机构运营和管理...

  • 星球崛起?区块链究竟是网易星球的皮还是里

    随着比特币价格暴涨,市值攀升,无数币圈人的财富神话让比特币以及其底层技术--区块链进入了大众视野。2018年的风口...

  • 区块链入门——比特币

    区块链技术是比特币的底层技术,比特币是区块链的一个应用 比特币 比特币不是一种货币,是一种通缩型虚拟货币 比特币是...

  • 区块链学习

    比特币中的密码学 比特币主要应用了密码学中的两个技术:哈希、签名 哈希 哈希函数性质:collision resi...

  • 区块链学习路线及资料索引

    一、学习目标 比特币发展历史,挖矿,分叉以及相关应用 区块链底层技术,如共识算法, 侧链技术, 密码学知识等,理解...

  • 探索区块链技术

    区块链技术来源 谈到区块链,就不得不提比特币,区块链作为比特币的底层技术,是伴随着比特币而产生的。比特币交易机制中...

网友评论

    本文标题:不懂点技术, 你凭什么能在币圈挣钱 —— 比特币底层密码学

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