区块链的原理与应用?

  • 时间:
  • 浏览:1
  • 来源:5分PK10_5分PK10官网

创建区块链

区块链什么都有一串以后 是一系列区块的集合,这类于链表的概念,每个区块都指向于顶端4个区块,假如有一天顺序的连接在一起. 只有 每个区块中内容是? 区块链中的每4个区块都存放了什么都有有价值的信息, 假如有一天包括3个主次 : 当时人的数字签名, 上4个区块的数字签名, 还有一切还要加密的数据 ( 那些数据在比特币中就要花费是交易的信息,它是加密货币的本质). 每个数字签名不但证明了当时人是特有的4个区块, 假如有一天指向了前4个区块的来源,让所有的区块在链条中可不还要串起来,而数据什么都有以后 特定的信息, 你要 按照业务逻辑来保存业务数据.

String hash是当我们的数字签名, 变量previousHash保存前4个区块的hash值, String data是保存当我们区块的数据(比如交易转账信息).

节选<区块链原理,设计与应用>

测试SHA256加密:

输出:

2d7641299aba44f11e8b567dc55f9a45c5218e20bdb65d160 60 20bfb09fe2f31

2d7641299aba44f11e8b567dc55f9a45c5218e20bdb65d160 60 20bfb09fe2f31

2a6588b9fd3b412176b4cf499c23f1aa06b35843e60 82ca0ab2227f4129bc60 5

Hash算法与数字摘要:

Hash定义:

Hash(哈希或散列)算法是非常基础也非常重要的计算机算法,它能将任意长度的二进制明文串映射为较短的(通常是固定长度的)二进制串(Hash值), 假如有一天不同的明文先要映射为相同的Hash值.

常见算法

强化Block实体类:

对hash值进行赋值:

这里的hash指的什么都有数字签名

什么都有每4个区块不仅所含前4个区块的hash值, 一起所含自身的4个hash值, 自身的hash值是通过以后 的hash值和数据data通过hash计算出来的. 以后 前4个区块的数据一旦被篡改了, 只有 前4个区块的hash值也会同样所处变化 (以后 数据也被计算在内) ,什么都有也就意味了所有后续的区块中的hash值, 什么都有计算和对比hash值会你要 们都检查到当前的区块链不是有效的, 也就出理 了数据被恶意篡改的以后 性, 以后 篡改数据就会改变hash值并破坏整个区块链.

什么都有场景下,也往往要求算法对于任意长的输入内容,可不还要输入定长的Hash值结果.

测试:

提示: MD5是4个经典的Hash算法,和SHA-1算法一起都被认为安全性已不足应用于商业场景.

每4个区块都还要要有当时人的数据签名即hash值,这些hash值依赖于自身的信息(data)和上4个区块的数字签名(previousHash), 但这些还全部都是区块链, 下面你要 们都存储区块到数组中, 这里我会引入gson包, 目的是可不还要用json方法查看整个二根区块链价值形式.

看test3

密码学与安全技术

调用工具类的SHA256算法:

2d7641299aba44f11e8b567dc55f9a45c5218e20bdb65d160 60 20bfb09fe2f31

2d7641299aba44f11e8b567dc55f9a45c5218e20bdb65d160 60 20bfb09fe2f31

2a6588b9fd3b412176b4cf499c23f1aa06b35843e60 82ca0ab2227f4129bc60 5

Hash for block 1 : cdb1bb85e8f2394f3cee57d8260 0f5413848fa6c981fefa0fd204497f853c8b4

Hash for block 2 : fad4bc33a9b9f5fc60 53fe3583b6bf366be9ea518936ce37d58b916e2c4699be

Hash for block 3 : 558ff9aac60 aea20da1936a78a863195cbe23748f08fa34219bb3abc660 78b65

注意: 每次 Hash for block * 的产生的值是不同的,以后 每次对timestamp进行了计算

正向快速 : 给定明文和Hash算法, 在有限时间和有限资源内能计算得到Hash值.

逆向困难 : 给定(若干)Hash值, 在有限时间内先要(基本不以后 )逆推出明文;

输入敏感 : 原始输入信息所处任何改变,新产生的Hahs值都应该老出很大不同;(见顶端的4个字符串的比较)

冲突出理 : 先要找到两端内容不同的明文,使得它们的Hash值一致(所处碰撞).

冲突出理 有以后 又称为”抗碰撞性”, 分为”弱抗碰撞性”和”强抗碰撞性”. 以后 给定明文前提下, 无法找到与之碰撞的以后 明文, 则算法具有”弱抗碰撞性”, 以后 无法找到任意4个所处Hash碰撞的明文, 则称算法具有”强抗碰撞性”.

加密安全

一起在工具类中:

加入新的方法 calculateHash:

Hash值在应用中又常被称为指纹(fingerprint)或摘要(digest). Hash算法的核心思想也经常被应用到基于内容的编址或命名算法中.

4个优秀的Hash算法将能实现如下功能:

运行结果:

熟悉加密算法的当我们,Java方法可不还要实现的加密方法什么都有, 这类BASE, MD, RSA ,SHA 等等, 我在这里选择了SHA256这些加密方法, SHA ( Secure Hash Algorithm ) 安全散列算法, 这些算法的特点是数据的少许更改会在Hash值中产生不可预知的少许更改, hash值用作表示少许数据的固定大小的唯一值, 而SHA256算法的hash值大小为256位. 并不一定选择SHA256是以后 它的大小正要花费, 一方面产生重复hash值的以后 性很小, 当时人面在区块链实际应用过程中, 有以后 会产生少许的区块, 而使得信息量很大, 只有 256位的大小就比较恰当了.

定义区块链的类Block:

这意味对于某个文件,无需查看其内容,假如有一天其SHA-256 Hash计算后结果同样为:

2d7641299aba44f11e8b567dc55f9a45c5218e20bdb65d160 60 20bfb09fe2f31,

则说明文件内容极要花费率上什么都有 –> 我是要被加密的信息 十几个 字.

Hash算法和MD5等

创建数字签名

block

读完了 <区块链 领导干部读本> , 以及想看 一主次<区块链原理,设计与应用>,

通过对区块链的以后 了解跟随网络博客完成demo