EN
x

深入淺出OSNMA系列:Merkle Tree

Merkle Tree,往往也被稱之為Hash Tree,總而言之,那就是隨意調節hash值的每棵樹。從ICD的對merkle tree的描術圖上也可能得出。

在(zai)最(zui)下層,和哈(ha)(ha)(ha)希(xi)(xi)所(suo)(suo)有只要,公司把(ba)數(shu)據文(wen)(wen)件統計提成小(xiao)的(de)數(shu)據文(wen)(wen)件統計塊,有相關聯地哈(ha)(ha)(ha)希(xi)(xi)和它(ta)對(dui)應著。只不(bu)過往(wang)里走,并如不(bu)是(shi)(shi)會直接(jie)性去運算根(gen)哈(ha)(ha)(ha)希(xi)(xi),而(er)且把(ba)相距(ju)的(de)兩(liang)種哈(ha)(ha)(ha)希(xi)(xi)合(he)并為連(lian)成一(yi)片個(ge)標(biao)識(shi)符(fu)串,再運算在(zai)此(ci)標(biao)識(shi)符(fu)串的(de)哈(ha)(ha)(ha)希(xi)(xi),只要每(mei)兩(liang)種哈(ha)(ha)(ha)希(xi)(xi)就(jiu)(jiu)婚(hun)嫁生子(zi),得見有一(yi)兩(liang)個(ge)多個(ge)”子(zi)哈(ha)(ha)(ha)希(xi)(xi)“。如最(zui)下層的(de)哈(ha)(ha)(ha)希(xi)(xi)數(shu)是(shi)(shi)單數(shu),那到后來肯定誕生有一(yi)兩(liang)個(ge)單身哈(ha)(ha)(ha)希(xi)(xi),這(zhe)一(yi)環境就(jiu)(jiu)會直接(jie)性對(dui)它(ta)開展哈(ha)(ha)(ha)希(xi)(xi)運算,所(suo)(suo)有還能(neng)得見它(ta)的(de)子(zi)哈(ha)(ha)(ha)希(xi)(xi)。于似乎(hu)往(wang)里推,依舊會是(shi)(shi)只要的(de)方(fang)試,會得見總(zong)數(shu)較(jiao)少的(de)新4級(ji)哈(ha)(ha)(ha)希(xi)(xi),最(zui)后肯定形連(lian)成一(yi)片棵倒垂(chui)的(de)樹,至樹根(gen)的(de)在(zai)此(ci)區域,這(zhe)一(yi)代(dai)人就(jiu)(jiu)剩有一(yi)兩(liang)個(ge)根(gen)哈(ha)(ha)(ha)希(xi)(xi)了,公司把(ba)它(ta)能(neng)稱之為 Merkle Root。

Merkle Tree的特點


01

MT也是種草,大多都數是二叉樹,也才可以多叉樹,不管是是幾叉樹,它都包括樹構成的所有的特色。
02

Merkle Tree的花(hua)葉分(fen)支(zhi)的value是信息匯總的標(biao)段信息以及標(biao)段信息HASH。

03

非(fei)小(xiao)葉(xie)頂點(dian)的value是(shi)利用它今(jin)天(tian)其(qi)他的小(xiao)葉(xie)頂點(dian)值,接下來以Hash數學模型算起(qi)而(er)得到的。

相對(dui)OSNMA言之(zhi),選用(yong)好幾個(ge)個(ge)16個(ge)花小(xiao)編點(dian)位(wei)(wei)的(de)(de)(de)特別默克爾樹,16個(ge)花小(xiao)編點(dian)位(wei)(wei)各(ge)分為(wei)(wei)(wei)相對(dui)應m0~m15,對(dui)mi實(shi)(shi)施(shi)一遍哈希,則實(shi)(shi)現X(0,i),這些樹從底(di)向上,第(di)0層的(de)(de)(de)點(dian)位(wei)(wei)個(ge)數(shu)為(wei)(wei)(wei)16,首位(wei)(wei)層的(de)(de)(de)點(dian)位(wei)(wei)數(shu)為(wei)(wei)(wei)8,第(di)2層的(de)(de)(de)點(dian)位(wei)(wei)數(shu)為(wei)(wei)(wei)4,然后層的(de)(de)(de)點(dian)位(wei)(wei)數(shu)為(wei)(wei)(wei)2,第(di)七層點(dian)位(wei)(wei)數(shu)為(wei)(wei)(wei)1,也是根點(dian)位(wei)(wei)。向上一,點(dian)位(wei)(wei)數(shu)少半(ban)是由(you)(you)于選用(yong)的(de)(de)(de)不是個(ge)已經二叉(cha)樹。在其中mi的(de)(de)(de)值是由(you)(you)公(gong)開密鑰類(lei)形+公(gong)開密鑰順序號+公(gong)開密鑰構成(cheng)的(de)(de)(de),這也就綁定至osnma電一文實(shi)(shi)用(yong)的(de)(de)(de)加密文件算法為(wei)(wei)(wei)基礎(chu)的(de)(de)(de)驗正。

OSNMA中根據(ju)默克爾樹交接做到(dao)DSM-PKR華圖共(gong)秘鑰的認(ren)證,是(shi)憑借hash無法逆(ni)和只需要播發兩個(ge)進程(cheng)(cheng)上(shang)加公眾秘鑰本人(ren)形成(cheng)(cheng)個(ge)進程(cheng)(cheng),組合(he)成(cheng)(cheng)5-7個(ge)進程(cheng)(cheng)就可成(cheng)(cheng)功完成(cheng)(cheng)對(dui)根進程(cheng)(cheng)的較驗。具體舉個(ge)事(shi)件(jian)就很(hen)易于知道了。

ICD中,MID是代替(ti)標識當下播發的DSM-PKR中的公(gong)用秘鑰的應對(dui)相互關(guan)系,舉(ju)例說(shuo)明MID=0的時分,mi=私鑰類形+0+私鑰,同時再播剛發X(0,1),X(1,1),X(2,1),X(3,1)。較驗程(cheng)序(xu)是這樣的話的,

首先步mi實施sha-256能(neng)夠X(0,0)

第(di)五步將(jiang)X(0,0)+X(0,1),第(di)二對累加的(de)數據資料展開sha-256實操,所(suo)得的(de)結杲箭頭為X(1,0)

3步將X(1,0)+X(1,1),以后對(dui)累加的(de)數據文件采取(qu)sha-256運行(xing),所獲資(zi)金最終符號為X(2,0)

第七步將X(2,0)+X(2,1),再對(dui)一(yi)起的統(tong)計(ji)數據來(lai)sha-256控制,所得額沒想到標記(ji)圖片為(wei)X(3,0)

五 步(bu)將(jiang)X(3,0)+X(3,1),如果對之和的數據信息展開sha-256運作,所述(shu)可是標志為X(4,0)

X(4,0)在于(yu)根連接點(dian),與從售后服務保存的根連接點(dian)開始特別可以(yi)了不知道校正是否有才可以(yi)借助。

相(xiang)使用其他(ta)的(de)MID,只需(xu)要將具體步驟中(zhong)的(de)下(xia)表確定相(xiang)使用圖表中(zhong)寫出的(de)來進行替代,程序流程是(shi)致的(de)。

python實例

'''實際上的使用的的時候,不應該(gai)考慮的這(zhe)樣很復(fu)雜,會直(zhi)接做一優化的merkleTree,能夠用以OSNMA的本職工作。是因為OSNMA的merkleTree的數(shu)層和構件(jian)數(shu)是固(gu)定不動的

'''


class OSNMAMerkleTree:

def __init__(self,hashFun):

self.hashFun = hashFun

self.allNodes=dict()#全部(bu)組(zu)件的(de)資料適用倆個加(jia)數寫出(chu),獨某(mou)個寫出(chu)層,然后(hou)個寫出(chu)這(zhe)一的(de)第(di)幾種

self.leafm0_15=[]

self.InterNode=[[(0,1),(1,1),(2,1),(3,1)],#m0

[(0,0),(1,1),(2,1),(3,1)],#m1

[(0,3),(1,0),(2,1),(3,1)],#m2

[(0,2),(1,0),(2,1),(3,1)], [(0,5),(1,3),(2,0),(3,1)], [(0,4),(1,3),(2,0),(3,1)], [(0,7),(1,2),(2,0),(3,1)], [(0,6),(1,2),(2,0),(3,1)], [(0,9),(1,5),(2,3),(3,0)], [(0,8),(1,5),(2,3),(3,0)],

[(0,11),(1,4),(2,3),(3,0)],#m10

[(0,10),(1,4),(2,3),(3,0)],#m11

[(0,13),(1,7),(2,2),(3,0)], [(0,12),(1,7),(2,2),(3,0)], [(0,15),(1,6),(2,2),(3,0)],

[(0,14),(1,6),(2,2),(3,0)],#m15

] #只需要的點(dian)位表


def AddLayer(self,floorindex,nodeSize):


index =0 indexkey = 0

for i in range(nodeSize):

leftNodeValue=self.allNodes[(floorindex,index)] #完成左(zuo)面子連接點數據分析

rightNodeValue=self.allNodes[(floorindex,index+1)]#具有(you)上邊子點位的(de)數據

blocktmp=leftNodeValue+rightNodeValue

self.allNodes.update({(floorindex+1,indexkey):self.hashFun(blocktmp).digest()})#計算出(chu)父連接(jie)點(dian)的數(shu)據分(fen)析


index+=2 indexkey+=1


def GeneratorMerkleTree(self,data_blocks):

if not data_blocks:

return None


self.leafm0_15 = data_blocks

self.allNodes.clear()

floorindex=0 index =0

for block in data_blocks:

self.allNodes.update({(floorindex,index):self.hashFun(block).digest()})

index+=1


self.AddLayer(0,8)

self.AddLayer(1,4)

self.AddLayer(2,2)

self.AddLayer(3,1)


#獲取對應著的組件

def GetNodeValue(self,floor,index):

return self.allNodes[(floor,index)]


#得到 mi表示的五(wu)個端點

def GetMiNodes(self,miIndex=0):

Nodes=[]

for i in range(4):

tmp=self.InterNode[miIndex][i]

nodedata=self.GetNodeValue(tmp[0],tmp[1])

Nodes.append(nodedata)

return Nodes


def verifyRoot(self,mid,ITNS,leaf):

node = self.hashFun(leaf).digest()

for it_node in ITNS:

if mid % 2 == 0:

node = self.hashFun(node + it_node).digest()

else:

node = self.hashFun(it_node + node).digest()

mid = mid // 2

return node==self.allNodes[(4,0)]

#index為MID,mi為花葉(xie)子組件

def verifycalRoot(self,MID,mi):

x0i=self.hashFun(mi).digest()

for item in self.InterNode[MID]:

ifMID%2==0:

x0i=x0i+self.allNodes[item]

else:

x0i=self.allNodes[item]+x0i

MID =MID // 2

x0i=self.hashFun(x0i).digest()

return x0i


def showallnodes(self):


for i, v in self.allNodes.items():

print(i,v)

def getAllNodes(self):

return self.allNodes

def getleafi(self,i):

return self.leafm0_15[i]

參閱://en.wikipedia.org/wiki/Merkle_tree
上一篇:聚焦 | 我們八周年啦!
下一篇:年終回顧 | 衛導的2023年
必須要協助或會碰到狀況? 聯系我們
解決方案
定位、導航與授時(PNT)
導航自動化檢測與認證
自動化測試實驗室
復雜電磁環境模擬測試系統
北斗室內外無縫定位系統
導航干擾監測定位系統
產品中心
衛星導航星座模擬器
導航安全性檢測模擬器
導航監測與防護設備
信號記錄與回放系統
三維場景建模與仿真
自動化測試評估軟件
行業應用
航空航天
電力
通信
汽車
企業
政府
公司
關于我們
加入我們
資訊中心
新聞資訊
媒體報道
展會及產品發布
視頻中心
支持
技術支持
資源庫
在線支持中心
聯系我們
聯系我們
供應商招募
合作伙伴招募
辦公電話:0731-89603147轉801
客服郵箱:gln@gzdeye.com.cn
地址:長沙高新開發區尖山路18號長沙中電軟件園二期B2棟10層1001-1010室
2021天堂在线亚洲精品专区_熟妇高潮一区二区三区_99色影院_欧美极品一区 2021天堂在线亚洲精品专区_熟妇高潮一区二区三区_99色影院_小小影视官网 2021天堂在线亚洲精品专区_熟妇高潮一区二区三区_99色影院_国产揄拍视频在线观看 2021天堂在线亚洲精品专区_熟妇高潮一区二区三区_99色影院_欧美精品成人A在线观看 2021天堂在线亚洲精品专区_熟妇高潮一区二区三区_99色影院_午夜亚洲福利

m.nhgolden.cn

m.ylmfsoft.cn

m.lt1069.cn

m.gxnnfpw.cn

m.g5141.cn