Coursera 《Bitcoin and Cryptocurrency Technologies》Week1

最近在上Courses上的一门介绍比特币及其加密技术的课程。我会在这里记录我每周的学习内容。

Lecture1  Welcome

介绍了本门课程会讲到的内容:

特别的,会讲加密Hash和数字签名, 以及一些用于建立数字货币的方法。 然后在讲座的最后,会开始讲加密货币,并给出一些加密货币简单的例子来说明我们需要解决的一些设计难题。

Lecture1.1  Cryptographic Hash Function

密码学哈希函数的三个属性:任意字符串作为输入,固定长度输出,可计算(在有效的时间内得到结果)。

哈希函数的密码学属性:collision-free 、hiding、puzzle-friendly.

collision-free: 没有人可以找到两个不同的输入,得到相同的输出。 应用:对比两个大文件是否一样,直接看Hash结果是否一致即可。

注意:没有Hash function 被证明不能找到两个输出相同的输入

hiding : 只知道Hash的输出,无法找到输入。 应用:H(K|X) = Y ,当K选自一个巨大的空间时,我们知道Y, 无法计算出X
puzzle-friendly: 容易设计计算难题。应用:输出集合为Y, 从一个巨大的空间中随机挑选一个puzzle,要求找到 一个X ,使得 H(puzzle | X) = Y 。puzzles 可以无限多,且每一个Puzzle都将代表一个难题,解决这个难题的唯一办法就是搜索整个空间,没有捷径。也可以快速便捷地进行puzzle问题地更新。

 

讲座最后说到了SHA-256的工作原理,这也是比特币中应用到的加密算法。SHA-256的关键问题就是数据预处理部分,这里给出我在进一步了解过程中看到的一篇比较详细的博客 SHA-256算法原理详解

SHA-256 信息预处理(pre-processing)

将信息Message 分为很多块,每一个块都是512bit。 但是最后一个块必须是448bit,这是因为最后一个块后面要附上64bit的信息块,这个信息块表示Message的bit长度。所以,Message本身的数据块不能够满足长度对512去余得448bit时,需要对其进行填充操作。填充的方式是先插入一个 1 bit,然后插入多个0 bit,直到满足要求。

值得注意的是,填充必须执行,也就是说,即使Message本身的数据块对512取余等于448时,依然需要在其后填充,填充内容为 一个 1 bit, 和 511个 0 bit。

SHA-256的加密原理:首先选取一个256bit的数据,跟第一个512bit的小信息块连接在一起,进行Hash计算,得到一个256bit的输出;再用这256bit的数据连接第二个512bit的信息块,输出得到256bit的输出;……最终,我们将只会得到一个256bit的输出,完成Hash过程。

下一个讲座将会谈到用哈希函数构建更复杂用于像比特币这样的分布式系统的数据结构。

 

 

 

 

 

 

 

 

 

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页