成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

揭秘區(qū)塊鏈的核心技術(shù)之「哈希與加密算法 」

區(qū)塊鏈 算法
大家都知道,區(qū)塊鏈的關(guān)鍵技術(shù)組成主要為:P2P網(wǎng)絡(luò)協(xié)議、共識(shí)機(jī)制、密碼學(xué)技術(shù)、賬戶與存儲(chǔ)模型。而這些技術(shù)中,又以 密碼學(xué)與共識(shí)機(jī)制 這兩點(diǎn)為最核心。

 

[[285099]]

大家都知道,區(qū)塊鏈的關(guān)鍵技術(shù)組成主要為:P2P網(wǎng)絡(luò)協(xié)議、共識(shí)機(jī)制、密碼學(xué)技術(shù)、賬戶與存儲(chǔ)模型。而這些技術(shù)中,又以 密碼學(xué)與共識(shí)機(jī)制 這兩點(diǎn)為最核心。那么今天我們來(lái)詳細(xì)的聊一聊密碼學(xué),看一看密碼學(xué)技術(shù)是如何在區(qū)塊鏈中應(yīng)用的。

首先,我們需知道區(qū)塊鏈中用到的密碼學(xué)算法有哪些?其實(shí)就兩大類:

  • 哈希算法
  • 非對(duì)稱加密算法

一、區(qū)塊鏈中的哈希算法

哈希算法是區(qū)塊鏈中用的最多的一種算法,它被廣泛的使用在構(gòu)建區(qū)塊和確認(rèn)交易的完整性上。

它是一類數(shù)學(xué)函數(shù)算法,又被稱為散列算法,需具備三個(gè)基本特性:

  1. 其輸入可為任意大小的字符串
  2. 它產(chǎn)生固定大小的輸出
  3. 它能進(jìn)行有效計(jì)算,也就是能在合理的時(shí)間內(nèi)就能算出輸出值

如果要求哈希算法達(dá)到密碼學(xué)安全的話,我們還要求它具備以下三個(gè)附加特性:

1.碰撞阻力:

是指對(duì)于兩個(gè)不同的輸入,必須產(chǎn)生兩個(gè)不同的輸出。如果對(duì)于兩個(gè)不同的輸入產(chǎn)生了相同的輸出,那么就說(shuō)明不具備碰撞阻力,或是弱碰撞阻力。

2.隱秘性:

也被稱為不可逆性,是指 y = HASH(x)中,通過(guò)輸入值x,可以計(jì)算出輸出值y,但是無(wú)法通過(guò)y值去反推計(jì)算出x值。為了保證不可逆,就得讓x的取值來(lái)自一個(gè)非常廣泛的集合,使之很難通過(guò)計(jì)算反推出x值。

3.謎題友好:

這個(gè)特性可以理解為,謎題是公平友好的,例如算法中 y = HASH(x),如果已知y值,想去得到x值,那就必須暴力枚舉,不斷的嘗試才能做到,并且沒(méi)有比這更好的辦法,沒(méi)有捷徑。

哈希算法有很多,比特幣主要使用的哈希算法是 SHA-256 算法。

除此之外,還有其他一些哈希算法也很流行,例如 MD5、SHA-1、SHA-2(SHA-224、SHA-256、SHA-384、SHA-512)、SHA-3 等,其中 MD5、SHA-1 已被證明了不具備 強(qiáng)碰撞阻力,安全性不夠高,因此市場(chǎng)上不再推薦使用。

我們以比特幣為例,來(lái)看一下哈希算法的具體應(yīng)用:

在比特幣中,使用哈希算法把交易生成數(shù)據(jù)摘要,當(dāng)前區(qū)塊里面包含上一個(gè)區(qū)塊的哈希值,后面一個(gè)區(qū)塊又包含當(dāng)前區(qū)塊的哈希值,就這樣一個(gè)接一個(gè)的連接起來(lái),形成一個(gè)哈希指針鏈表,如下圖:

 

上面只是示意圖,那么在實(shí)際比特幣系統(tǒng)中,每個(gè)區(qū)塊包含哪些內(nèi)容呢:

 

重點(diǎn)關(guān)注一下上圖中的:

  • Prev Block:記錄簽一個(gè)區(qū)塊的hash地址,32字節(jié)
  • Merkle Root:是一個(gè)記錄當(dāng)前塊內(nèi)的所有交易信息的數(shù)據(jù)摘要hash值,32字節(jié)
  • Nonce:一個(gè)隨機(jī)值,需要通過(guò)這個(gè)隨機(jī)值去找到滿足某個(gè)條件的hash值(挖礦),4字節(jié)

上面只是解釋了幾個(gè)重點(diǎn)的字段,其它字段通過(guò)字面應(yīng)該容易理解就不一一解釋了。

這所有的字段一起就組成了 block header(區(qū)塊頭),然后需要對(duì) block header 進(jìn)行2次hash計(jì)算,計(jì)算完成的值就是當(dāng)前比特幣區(qū)塊的hash值。因?yàn)楸忍貛畔到y(tǒng)要求計(jì)算出來(lái)的這個(gè)hash值滿足一定的條件(小于某個(gè)數(shù)值),因此需要我們不斷的遍歷Nonce值去計(jì)算新的hash值以滿足要求,只有找到了滿足要求的hash值,那么這就是一個(gè)合法區(qū)塊了(這一系列動(dòng)作也叫作挖礦)

python 示例: SHA-256(SHA-256 (Block Header)

我們?cè)倏匆幌律厦娴牧硪粋€(gè)重要字段: Merkle tree 字段。

Merkle tree 被稱為 默克爾樹,它也是哈希算法的一個(gè)重要應(yīng)用。

它其實(shí)是一個(gè)用哈希指針建立的二叉樹或多叉樹。

Merkle tree 如圖:

 

其樹的頂端叫做 默克爾根(Merkle Root),Merkle Root 也是一個(gè)hash值,它是怎么計(jì)算出來(lái)的呢?

比特幣中對(duì)每一筆交易做一個(gè)hash計(jì)算,然后把每2個(gè)交易的hash再進(jìn)行合并做hash,如圖中的 交易A的hash值是 H(A),交易B的hash值是H(B),再對(duì)這2個(gè)交易合并hash后就是H(hA|hb),就這樣一直往上合并計(jì)算,算到最后的根部就是 Merkle Root 了。

在比特幣和以太坊中都是使用的默克爾樹結(jié)構(gòu),但是以太坊為了實(shí)現(xiàn)更多復(fù)雜的功能,所以有三個(gè)默克爾樹。

至此,區(qū)塊鏈中的哈希算法應(yīng)用就介紹完了,接下來(lái)我們看一下非對(duì)稱加密算法。

二、區(qū)塊鏈中的非對(duì)稱加密算法

區(qū)塊鏈中有一個(gè)很關(guān)鍵的點(diǎn)就是賬戶問(wèn)題,但比特幣中是沒(méi)有賬戶概念的,那大家是怎么進(jìn)行轉(zhuǎn)賬交易的呢?

這里就得先介紹區(qū)塊鏈中的非對(duì)稱加密技術(shù)了。

非對(duì)稱加密技術(shù)有很多種,如:RSA、ECC、ECDSA 等,比特幣中是使用的 ECDSA 算法。

ECDSA 是美國(guó)政府的標(biāo)準(zhǔn),是利用了橢圓曲線的升級(jí)版,這個(gè)算法經(jīng)過(guò)了數(shù)年的細(xì)致密碼分析,被廣泛認(rèn)為是安全可靠的。

所謂非對(duì)稱加密是指我們?cè)趯?duì)數(shù)據(jù)進(jìn)行加密和解密的時(shí)候,需使用2個(gè)不同的密鑰。比如,我們可以用A密鑰將數(shù)據(jù)進(jìn)行加密,然后用B密鑰來(lái)解密,相反,也可以用B來(lái)加密,然后使用A來(lái)解密。那么如果我想給某個(gè)人傳遞信息,那我可以先用A加密后,將密文傳給她,她拿到密文之后,用手上的B密鑰去解開。這2個(gè)密鑰,一個(gè)被成為公鑰、一個(gè)是私鑰。

在比特幣中,每個(gè)用戶都有一對(duì)密鑰(公鑰和私鑰),比特幣系統(tǒng)中是使用用戶的公鑰作為交易賬戶的。

我們先看下圖:

 

在圖中可以看到,在第一筆交易記錄中,是 用戶U0 來(lái)發(fā)起的交易,要將代幣支付給 用戶U1,是怎么實(shí)現(xiàn)的呢?

  1. 首先 用戶U0 寫好交易信息:data(明文,例如:用戶U0轉(zhuǎn)賬100元給用戶U1)
  2. 用戶U0 使用哈希算法將交易信息進(jìn)行計(jì)算,得出 H = hash(data),然后再使用自己的私鑰對(duì) H 進(jìn)行簽名,即 S(H),這一步其實(shí)是為了防止交易信息被篡改用的
  3. 然后基于區(qū)塊鏈網(wǎng)絡(luò),將 簽名S(H) 和 交易信息data 傳遞給 用戶U1
  4. 用戶U1 使用 用戶U0 的公鑰 來(lái)對(duì) S(H) 解密,就得到了交易信息的哈希值 H
  5. 同時(shí),用戶U1 還使用哈希算法對(duì) 交易信息data 進(jìn)行計(jì)算,得出 H2 = hash(data)
  6. 對(duì)比上面2個(gè)哈希值,如果 H1==H2,則交易合法。說(shuō)明 用戶U0 在發(fā)起交易的時(shí)候確實(shí)擁有真實(shí)的私鑰,有權(quán)發(fā)起自己賬戶的交易
  7. 網(wǎng)絡(luò)中每一個(gè)節(jié)點(diǎn)都可以參與上述的驗(yàn)證步驟。

這個(gè)示例,就是比特幣中一次交易的簽名流程,即將 哈希算法與非對(duì)稱算法結(jié)合在一起用于了比特幣交易的數(shù)字簽名。

除此之外,比特幣中,公私鑰的生成、比特幣地址的生成也是由非對(duì)稱加密算法來(lái)保證的。

以上,就是區(qū)塊鏈體系中,核心技術(shù)之哈希算法與加密算法的應(yīng)用情況,歡迎一起交流。

 

責(zé)任編輯:武曉燕 來(lái)源: 不止思考
相關(guān)推薦

2020-04-06 20:11:26

區(qū)塊鏈分布式核心技術(shù)

2020-01-15 10:29:29

區(qū)塊鏈架構(gòu)模型

2018-07-10 10:29:27

2018-01-16 10:49:52

區(qū)塊鏈核心技術(shù)

2018-08-19 11:00:05

2022-05-18 14:18:56

區(qū)塊鏈加密技術(shù)數(shù)據(jù)

2021-08-07 15:29:48

區(qū)塊鏈比特幣技術(shù)

2023-05-08 15:33:22

2018-08-06 09:40:22

2022-07-12 10:38:25

分布式框架

2022-01-25 13:59:19

區(qū)塊鏈加密貨幣數(shù)字資產(chǎn)

2018-04-12 06:58:55

區(qū)塊鏈招聘加密貨幣

2017-03-08 10:06:11

Java技術(shù)點(diǎn)注解

2024-03-26 15:27:05

2020-12-23 15:12:13

區(qū)塊鏈加密貨幣以太坊

2020-01-11 17:49:03

區(qū)塊鏈數(shù)字貨幣比特幣

2018-11-26 09:00:14

2020-04-08 09:00:00

數(shù)字貨幣區(qū)塊鏈區(qū)塊鏈技術(shù)

2022-10-11 08:37:43

Servlet配置版本

2023-10-16 19:05:20

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 男女搞网站 | 99精品欧美一区二区三区综合在线 | 国产精品久久欧美久久一区 | 欧美性一区二区三区 | 91色站 | 美女露尿口视频 | 欧美精品片 | 亚洲在线一区 | 91网站视频在线观看 | 中文字幕蜜臀av | 日日操日日舔 | 国产乱人伦| 久久久久亚洲国产| 久久大| 日本精品视频一区二区 | 一级片av | 欧美激情黄色 | 麻豆久久久久久久久久 | 99精品欧美一区二区三区 | 国产一级特黄aaa大片评分 | 亚洲二区在线观看 | 久久69精品久久久久久久电影好 | 在线观看亚洲一区二区 | 成人免费一区二区三区牛牛 | 水蜜桃久久夜色精品一区 | 久久成人免费视频 | 自拍在线 | 午夜影院免费体验区 | 九九久久这里只有精品 | 精品国产三级 | 在线看无码的免费网站 | 日韩视频精品在线 | 国产精品久久久爽爽爽麻豆色哟哟 | 成人婷婷 | 人人九九精 | 亚洲一区二区三区高清 | 欧美精品日韩 | 国产精品成人一区 | 狠狠爱网址 | 日韩高清一区 | 91玖玖|