密码学及加密货币概述

2018-07-22  本文已影响0人  Audience0

哈希函数,具有以下特征:

1.其输入可以使任意大小的字符串

2.它产生固定大小的输出

3.它能有效的计算,简单的说就是,对于特定的输入字符串,在合理的时间内,我们可以算出哈希函数的输出,对于N位的字符串,其哈希值计算的复杂度为O(N)

要使哈希函数达到密码安全,需要以下特性:

1.碰撞阻力,即无法找到两个输入值,其哈希值是相等的

2.隐秘性,即无法从已知的输出,得到未知的输入

3.谜题友好

安全哈希算法(Secure Hash Algorithm 256,   简称 SHA-256)  --- 主要被比特币采用

哈希指针:

一个指向数据存储未知及其位置数据的哈希值的指针,它与普通指针一样可以指向数据存储未知,并且哈希指针还可以明晰某个时间戳下该数据的哈希值的指针.

区块链:

通过哈希指针而不是普通指针构建的一个链表,这样的链表成为区块链.

在普通链表中,每个区块或者节点,既有数据还有指向上一个区块的指针.而在区块链中,指针为哈希指针,每个区块不仅能告诉我们上一个区块的位置,还包含上个区块数据的哈希值.

所以,当区块链中一个数据被改变的时候,其哈希值将发生变化, 导致与下个节点中的哈希指针无法匹配,即会被发现数据发生了改变,这样,我通过根节点(创世区块),便能记住整个区块链的数据,也能验证该区块链的数据是否发生变化.

数字签名:

数字签名即被认为是对纸上手写签名的数字模拟.

数字签名特性:

1.只有你可以制作你自己的签名,但任何看到它的人都可以验证其有效性.

2.签名只与某一特定文件联系,因此签名不能用于表明你同意或支持另一份不同的文件.

数字签名方案由一下三个算法构成:

(sk,pk): = generateKeys(keysize)        generateKeys 把 keysize作为输入,来产生一对公钥和私钥.

私钥sk  被安全保存,并用来签名一段消息;公钥pk是人人可以找到的,可以验证签名.

sig: sign(sk,message)     签名过程是 把一段消息和私钥作为一个输入,对于消息输出就是签名.

isValid:= verify(pk,message,sig)验证过程是通过把一段消息和签名消息与公钥作为输入,返回的结果是真,证明签名属实;

上一篇 下一篇

猜你喜欢

热点阅读