• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于區(qū)塊鏈的電子證件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

      2018-10-25 01:21:38文淑華
      現(xiàn)代計(jì)算機(jī) 2018年27期
      關(guān)鍵詞:證件哈希課程設(shè)計(jì)

      文淑華

      (電子科技大學(xué)信息與軟件工程學(xué)院,成都 610054)

      0 引言

      電子科技大學(xué)信息與軟件工程學(xué)院非常重視學(xué)生工程實(shí)踐能力的培養(yǎng),將綜合課程設(shè)計(jì)列為學(xué)生的實(shí)踐類(lèi)核心課程,分為綜合課程設(shè)計(jì)I、綜合課程設(shè)計(jì)II、綜合課程設(shè)計(jì)III這三門(mén)必修課程,分別對(duì)應(yīng)1個(gè)學(xué)分、2個(gè)學(xué)分和2個(gè)學(xué)分。綜合課程設(shè)計(jì)III針對(duì)高年級(jí)學(xué)生開(kāi)設(shè),要求學(xué)生在學(xué)習(xí)相關(guān)課程后參與一個(gè)具有一定難度的小型軟件工程項(xiàng)目,要求學(xué)生利用軟件工程的思想完成整個(gè)項(xiàng)目周期的所有階段,并能對(duì)結(jié)果進(jìn)行預(yù)測(cè)和模擬,在設(shè)計(jì)過(guò)程中能體現(xiàn)一定的創(chuàng)新意識(shí)。綜合課程設(shè)計(jì)III的執(zhí)行采用教師出題、學(xué)生做題的形式,指導(dǎo)教師需要考慮大三學(xué)生的能力和知識(shí)結(jié)構(gòu),擬出一個(gè)切合學(xué)生實(shí)際情況并能培養(yǎng)學(xué)生綜合設(shè)計(jì)能力和創(chuàng)新能力的課題,因此本文將“基于區(qū)塊鏈的電子證件系統(tǒng)”設(shè)計(jì)為綜合課程設(shè)計(jì)III的課題,并對(duì)該系統(tǒng)使用的核心技術(shù)、設(shè)計(jì)和實(shí)現(xiàn)進(jìn)行了詳細(xì)的介紹,旨在培養(yǎng)學(xué)生使用軟件工程思想,采用區(qū)塊鏈技術(shù)、人臉識(shí)別技術(shù)、加密算法和Android應(yīng)用編程技術(shù)綜合設(shè)計(jì)和實(shí)現(xiàn)一個(gè)完整系統(tǒng)的能力,同時(shí)為學(xué)生的課題執(zhí)行提供實(shí)驗(yàn)指導(dǎo)。

      1 課題背景和研究意義

      在現(xiàn)代社會(huì)中,人們對(duì)身份證、駕駛證、社??ǖ戎T多證件有著極強(qiáng)的依賴,但隨著社會(huì)的發(fā)展,實(shí)體證件容易丟失、損壞、偽造、不便攜帶,丟失后補(bǔ)辦手續(xù)復(fù)雜、周期長(zhǎng)等缺點(diǎn)給人們生活造成了諸多不便。而如今的電子證件系統(tǒng)在安全性上往往不如人意?;趨^(qū)塊鏈的電子證件系統(tǒng)融合了當(dāng)今非?;馃岬膮^(qū)塊鏈技術(shù)[1-3]、采用了基于神經(jīng)網(wǎng)絡(luò)的人臉識(shí)別技術(shù)[4-5]、融合國(guó)密SM3算法[6]的區(qū)塊鏈存儲(chǔ)機(jī)制和基于國(guó)密SM2、SM4算法[7-10]的HTTPS通信機(jī)制,并使用負(fù)載均衡策略的C/S網(wǎng)絡(luò)架構(gòu)、基于Android平臺(tái)的應(yīng)用層設(shè)計(jì)與實(shí)現(xiàn)了該系統(tǒng),全面培養(yǎng)學(xué)生根據(jù)軟件系統(tǒng)的應(yīng)用場(chǎng)景,選擇合適的開(kāi)發(fā)環(huán)境、工具與技術(shù)標(biāo)準(zhǔn)進(jìn)行軟件系統(tǒng)的設(shè)計(jì)和開(kāi)發(fā),培養(yǎng)學(xué)生解決復(fù)雜軟件工程問(wèn)題的能力和創(chuàng)新意識(shí),符合綜合課程設(shè)計(jì)III的畢業(yè)要求。

      2 系統(tǒng)總體設(shè)計(jì)

      用戶首先進(jìn)行人臉識(shí)別登錄,客戶端將接收到的信息整理發(fā)送到服務(wù)器,由服務(wù)器在區(qū)塊鏈上查找人臉面部信息,確認(rèn)登錄有效。在登錄之后,用戶可以看到上傳成功的證件、正在審核的證件及審核進(jìn)度、認(rèn)證失敗的證件及失敗原因等。用戶可以選擇上傳信息選項(xiàng),在填選完相應(yīng)的證件信息后,終端會(huì)將該信息進(jìn)行加密處理,并上傳到專(zhuān)門(mén)的業(yè)務(wù)處理服務(wù)器,服務(wù)器接受這一部分?jǐn)?shù)據(jù)后上報(bào)到公安機(jī)關(guān)(驗(yàn)證第三方)進(jìn)行信息真?zhèn)蔚恼鐒e。對(duì)于確認(rèn)為真實(shí)有效的信息,服務(wù)器將用戶上傳的證件信息私有地址傳送到區(qū)塊鏈上。區(qū)塊鏈服務(wù)器會(huì)將內(nèi)容進(jìn)行SM3加密后存儲(chǔ)到區(qū)塊鏈中。系統(tǒng)的功能架構(gòu)如圖1所示。

      圖1 基于區(qū)塊鏈的電子證件系統(tǒng)功能架構(gòu)圖

      基于區(qū)塊鏈的電子證件系統(tǒng)的功能模塊主要分為人臉識(shí)別管理、證件信息管理、證件信息查看、證件信息在線授權(quán)、用戶信息管理等五大模塊。

      本系統(tǒng)采用客戶端/服務(wù)器(C/S)結(jié)構(gòu),主體分為三個(gè)部分:客戶端、服務(wù)器、認(rèn)證機(jī)構(gòu)??蛻舳酥?,用戶可以進(jìn)行證件信息上傳、證件數(shù)據(jù)刪除、證件授權(quán)等功能。服務(wù)器端實(shí)現(xiàn)數(shù)據(jù)管理,包括數(shù)據(jù)處理、調(diào)用、存儲(chǔ)。認(rèn)證機(jī)構(gòu)則保證證件信息有效性,在系統(tǒng)內(nèi)內(nèi)置一個(gè)接口,用于提供到第三方進(jìn)行信息認(rèn)證。系統(tǒng)總體流程圖如圖2所示。

      3 系統(tǒng)網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)

      本系統(tǒng)采用C/S架構(gòu)。傳統(tǒng)C/S架構(gòu)技術(shù)成熟,且比較適合移動(dòng)端應(yīng)用。圖3為系統(tǒng)的網(wǎng)絡(luò)架構(gòu)圖。

      本系統(tǒng)中數(shù)據(jù)備份涉及業(yè)務(wù)服務(wù)器數(shù)據(jù)備份和區(qū)塊鏈服務(wù)器數(shù)據(jù)備份。業(yè)務(wù)服務(wù)器數(shù)據(jù)備份采用熱備同構(gòu)方式,只有主業(yè)務(wù)服務(wù)器接收寫(xiě)請(qǐng)求,然后由主服務(wù)器負(fù)責(zé)把數(shù)據(jù)同步到兩個(gè)備份服務(wù)器,并保證每過(guò)一定時(shí)間進(jìn)行更新,主服務(wù)器采用一對(duì)多的方式進(jìn)行同步,相對(duì)于級(jí)聯(lián)的方式,這種方式在某個(gè)備節(jié)點(diǎn)故障時(shí),不會(huì)影響其他備節(jié)點(diǎn)的同步。

      圖2 系統(tǒng)總體流程圖

      圖3 基于區(qū)塊鏈的個(gè)人電子證件系統(tǒng)網(wǎng)絡(luò)架構(gòu)圖

      對(duì)于區(qū)塊鏈備份,系統(tǒng)采用分布式冷備方式,將區(qū)塊鏈按照一定規(guī)律碎片化后根據(jù)手機(jī)存儲(chǔ)性能將這些碎片數(shù)據(jù)動(dòng)態(tài)分配存儲(chǔ)到不同手機(jī)終端上,在犧牲手機(jī)很小的存儲(chǔ)空間的情況下完整地保存整條區(qū)塊鏈。當(dāng)區(qū)塊鏈所在服務(wù)器發(fā)生故障導(dǎo)致數(shù)據(jù)丟失時(shí)服務(wù)器從各個(gè)終端節(jié)點(diǎn)進(jìn)行數(shù)據(jù)回檔,還原區(qū)塊鏈。

      4 核心技術(shù)設(shè)計(jì)

      為了保障證件信息的安全性,本系統(tǒng)中用戶身份認(rèn)證、信息傳輸加密、證件信息存儲(chǔ)三個(gè)模塊分別采用了人臉識(shí)別技術(shù)、國(guó)產(chǎn)加密算法、區(qū)塊鏈技術(shù)三大核心技術(shù)。其中,重點(diǎn)對(duì)區(qū)塊鏈技術(shù)進(jìn)行詳細(xì)闡述。

      4.1 基于國(guó)密SM 2、SM 4算法的系統(tǒng)交互設(shè)計(jì)

      為了保障客戶信息不會(huì)因?yàn)榧倜翱蛻舳嘶蚍?wù)器而被盜取,提高系統(tǒng)整體安全性,系統(tǒng)采用基于國(guó)密SM2、SM4算法的數(shù)字證書(shū)實(shí)現(xiàn)雙向認(rèn)證來(lái)實(shí)現(xiàn)兩端認(rèn)證交互。

      4.2 基于神經(jīng)網(wǎng)絡(luò)的人臉識(shí)別機(jī)制設(shè)計(jì)

      人臉特征具有很強(qiáng)的自身穩(wěn)定性和個(gè)體差異性,是身份驗(yàn)證的理想依據(jù)。利用人臉生物特征進(jìn)行身份對(duì)比是最自然和直接的身份驗(yàn)證方式。本系統(tǒng)中采用基于神經(jīng)網(wǎng)絡(luò)的人臉識(shí)別機(jī)制對(duì)用戶身份進(jìn)行驗(yàn)證,將人臉識(shí)別問(wèn)題分為人臉檢測(cè)、人臉校正、人臉特征提取和人臉鑒別四個(gè)部分。每個(gè)部分采用相應(yīng)算法實(shí)現(xiàn)。

      4.3 基于區(qū)塊鏈的證件信息存儲(chǔ)設(shè)計(jì)

      對(duì)于認(rèn)證后的證件信息的存儲(chǔ),系統(tǒng)創(chuàng)新性地提出了融合國(guó)密SM3算法的區(qū)塊鏈存儲(chǔ)機(jī)制,與傳統(tǒng)的數(shù)據(jù)庫(kù)存在數(shù)據(jù)丟失、數(shù)據(jù)泄露的問(wèn)題相比,區(qū)塊鏈技術(shù)以其去中心化、不可篡改性等特性很好地解決了這一系列問(wèn)題,保證了證件信息的安全性。

      (1)區(qū)塊鏈

      區(qū)塊鏈本質(zhì)上是一個(gè)對(duì)等網(wǎng)絡(luò)(peer-to-peer)的分布式賬本數(shù)據(jù)庫(kù),英文是Blockchain。比特幣是區(qū)塊鏈的第一個(gè)應(yīng)用,是規(guī)模最大、應(yīng)用范圍最廣的區(qū)塊鏈。目前,關(guān)于區(qū)塊鏈沒(méi)有統(tǒng)一的定義,綜合來(lái)看,區(qū)塊鏈就是基于區(qū)塊鏈技術(shù)形成的公共數(shù)據(jù)庫(kù)(或稱(chēng)公共賬本)。其中區(qū)塊鏈技術(shù)是指多個(gè)參與方之間基于現(xiàn)代密碼學(xué)、分布式一致性協(xié)議、點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)通信技術(shù)和智能合約編程語(yǔ)言組成的數(shù)據(jù)交換、處理和存儲(chǔ)技術(shù)。與此同時(shí),區(qū)塊鏈技術(shù)本身仍在不斷演變和發(fā)展。傳統(tǒng)上,信用機(jī)制是集中的,集中的信任和信用機(jī)制必然導(dǎo)致集中組織成為價(jià)值鏈的核心,容易產(chǎn)生問(wèn)題。另外,區(qū)塊鏈技術(shù)首先在人類(lèi)歷史上實(shí)施了分散化的大規(guī)模信貸機(jī)制。區(qū)塊鏈本身實(shí)際上是一系列鏈接的數(shù)據(jù)塊。每個(gè)數(shù)據(jù)塊使用散列算法記錄一組樹(shù)交易狀態(tài)信息,這確保了每個(gè)塊中的交易數(shù)據(jù)不會(huì)被篡改。

      區(qū)塊鏈的基礎(chǔ)架構(gòu)分為三層,如上圖4所示。

      圖4 區(qū)塊鏈的基礎(chǔ)架構(gòu)

      網(wǎng)絡(luò)層,區(qū)塊鏈?zhǔn)腔贗P通信協(xié)議和P2P網(wǎng)絡(luò)的分布式系統(tǒng),與傳統(tǒng)的集中式系統(tǒng)不同,它不依賴集中式服務(wù)器節(jié)點(diǎn)來(lái)轉(zhuǎn)發(fā)消息,而是每一個(gè)節(jié)點(diǎn)參與消息的轉(zhuǎn)發(fā),因此,安全性更高。

      數(shù)據(jù)層,區(qū)塊鏈?zhǔn)且粋€(gè)分布式數(shù)據(jù)庫(kù)系統(tǒng),只能追加,不能更改。如果它是一個(gè)開(kāi)放的區(qū)塊鏈,即一個(gè)公共鏈,那么這個(gè)賬本可以被任何地方的任何人查詢,完全透明。區(qū)塊鏈網(wǎng)絡(luò)中的各個(gè)節(jié)點(diǎn)通過(guò)使用共識(shí)算法來(lái)保持一致性的賬本數(shù)據(jù)庫(kù)。同時(shí),使用加密簽名和散列算法來(lái)確保數(shù)據(jù)庫(kù)不能被篡改,不可偽造和可跟蹤。作為比特幣系統(tǒng)的設(shè)計(jì)者,中本聰巧妙地在系統(tǒng)設(shè)計(jì)中增加了一種經(jīng)濟(jì)激勵(lì)的PoW(工作量證明)機(jī)制,即使擁有網(wǎng)絡(luò)計(jì)算能力51%以上的人也不會(huì)對(duì)網(wǎng)絡(luò)發(fā)起攻擊,因?yàn)檫@樣會(huì)損害他們自己的利益。因此,比特幣系統(tǒng)自推出以來(lái)連續(xù)運(yùn)行了七年多。

      應(yīng)用層,可以使用區(qū)塊鏈,而不是傳統(tǒng)的注冊(cè)和清算系統(tǒng)。傳統(tǒng)銀行在維護(hù)賬簿結(jié)算和清算支付交易方面的結(jié)構(gòu)過(guò)于復(fù)雜,維護(hù)成本過(guò)高。就應(yīng)用而言,區(qū)塊鏈平臺(tái)可為用戶編寫(xiě)智能合約提供編程環(huán)境。智能合約可以把業(yè)務(wù)規(guī)則轉(zhuǎn)化成在區(qū)塊鏈平臺(tái)自動(dòng)執(zhí)行的合約,不依賴可信任的第三方就可以被執(zhí)行,也可以不被人為干預(yù)。從理論上講,一旦部署完成,履行合同的條件一旦完成,將自動(dòng)執(zhí)行。區(qū)塊鏈為執(zhí)行結(jié)果提供了公開(kāi)檢查的便利,合同具有公平性和透明度。

      (2)總體構(gòu)思

      考慮到本系統(tǒng)中區(qū)塊鏈[11-14]實(shí)則是由不同的區(qū)塊鏈接起來(lái)的,所以最重要的是設(shè)計(jì)好Block(區(qū)塊),然后使用STL中的順序性容器list來(lái)進(jìn)行二次包裝構(gòu)成區(qū)塊鏈。這里借鑒了如圖5所示的結(jié)構(gòu)。

      圖5 區(qū)塊結(jié)構(gòu)

      (3)關(guān)鍵類(lèi)和關(guān)鍵函數(shù)

      本系統(tǒng)設(shè)計(jì)了三個(gè)關(guān)鍵類(lèi)分別是Person類(lèi)、Block類(lèi)、TreeNode類(lèi)。Person類(lèi)是用來(lái)存儲(chǔ)用戶的具體信息的類(lèi),包含名字、電話號(hào)碼、密保問(wèn)題、出生信息、郵箱信息、居住地址、面部信息和一個(gè)獨(dú)一無(wú)二的ID。在Person類(lèi)中,為了拓展性的需要和格式的可控,更為了保證魯棒性,上述成員變量都使用string來(lái)進(jìn)行實(shí)現(xiàn),面部信息的拓展則使用STL的vector來(lái)進(jìn)行存儲(chǔ),同時(shí)使用一個(gè)const int_PersonQuestion Number來(lái)控制密保問(wèn)題的數(shù)量,初步暫定為3個(gè)。

      在本系統(tǒng)中設(shè)計(jì)Block類(lèi)為區(qū)塊類(lèi),用來(lái)存儲(chǔ)區(qū)塊相 關(guān) 信 息 ,有 Block(void)、InsertInfo(Person)、GetInfo(string)三個(gè)關(guān)鍵函數(shù)。Block(void)是Block類(lèi)的構(gòu)造函數(shù),用來(lái)生成新區(qū)塊的同時(shí)對(duì)這個(gè)區(qū)塊進(jìn)行相關(guān)的初始化的工作,包括制定區(qū)塊的大小和設(shè)置該區(qū)塊的初始哈希值等。GetInfo(string)返回值為vector,作用是從區(qū)塊的索引表中查詢某個(gè)人的所有相關(guān)信息,存儲(chǔ)在一個(gè)vector中并返回。TreeNode類(lèi)是哈希樹(shù)類(lèi),用來(lái)管理對(duì)哈希樹(shù)的相關(guān)操作,被包含在Block類(lèi)中。InsertIn?fo(Person)函數(shù)返回值為void,用來(lái)將某個(gè)人的相關(guān)信息插入到區(qū)塊的尾部,流程圖如圖6所示。

      圖6 信息插入?yún)^(qū)塊流程圖

      (4)電子證件系統(tǒng)中哈希樹(shù)設(shè)計(jì)與分析

      ①哈希樹(shù)的基本原理

      與傳統(tǒng)的區(qū)塊鏈技術(shù)使用SHA256算法對(duì)信息實(shí)現(xiàn)定長(zhǎng)輸出不同,本系統(tǒng)采用國(guó)密SM3算法對(duì)證件信息進(jìn)行轉(zhuǎn)換輸出定長(zhǎng)Hash值來(lái)構(gòu)建這個(gè)HashTree,如圖7所示。

      HashTree采用類(lèi)似于SegmentTree的方法來(lái)實(shí)現(xiàn),考慮靜態(tài)SegmentTree的建立,可以在nlog(n)的時(shí)間內(nèi)建立整棵SegmentTree,但是靜態(tài)算法只能對(duì)定長(zhǎng)的數(shù)組建立,考慮到內(nèi)存的限制和日后使用的動(dòng)態(tài)性,不可能在每次Modify后重構(gòu)整棵HashTree,所以此處考慮利用二進(jìn)制分組的方法來(lái)重建整棵HashTree,即重構(gòu)HashTree的時(shí)間復(fù)雜度為nlog2(n),每當(dāng)大小超過(guò)2n之后就重構(gòu)整棵HashTree。

      圖7 證件信息轉(zhuǎn)換為哈希值

      ②個(gè)人電子證件系統(tǒng)哈希樹(shù)的實(shí)現(xiàn)

      系統(tǒng)使用函數(shù)Construct(int,int,TreeNode*)遞歸的構(gòu)造區(qū)間范圍在[l,r]的哈希樹(shù),并將根指針存儲(chǔ)在帶入的參數(shù)中。之后考慮HashTree建立起來(lái)后,對(duì)于某一個(gè)點(diǎn)的Modify操作:每次直接在HashTree上二分即可找到對(duì)應(yīng)的LeafNode,并將LeafNode上的HashValue更新為一個(gè)新的值,同時(shí)在回溯的時(shí)候?qū)τ贖ashTree上的每一個(gè)可能被改變的結(jié)點(diǎn),根據(jù)其左右兒子的HashValue來(lái)重新計(jì)算新的HashValue。系統(tǒng)用Delete(TreeNode*root)函數(shù)來(lái)遞歸的刪除以root為根的哈希樹(shù),該函數(shù)返回值類(lèi)型為void。GetHashValue(void)函數(shù)用來(lái)返回某個(gè)哈希樹(shù)節(jié)點(diǎn)上的SM3密文,返回值類(lèi)型為string。

      (5)個(gè)人電子證件系統(tǒng)中國(guó)密SM3摘要算法的研究

      在把證件信息轉(zhuǎn)換為Hash值時(shí),系統(tǒng)采用的是國(guó)密SM3算法。SM3密碼雜湊算法采用Merkle-Dam?gard結(jié)構(gòu),消息分組512比特,輸出雜湊值256比特。SM3算法的壓縮函數(shù)與SHA256的壓縮函數(shù)具有相似的結(jié)構(gòu),但SM3算法壓縮函數(shù)的結(jié)構(gòu)和消息擴(kuò)展過(guò)程的設(shè)計(jì)更加復(fù)雜,例如壓縮函數(shù)的每一輪都使用2個(gè)消息字,消息拓展過(guò)程的每一輪都使用5個(gè)消息字等。

      5 核心技術(shù)實(shí)現(xiàn)

      下面重點(diǎn)介紹基于區(qū)塊鏈的證件信息存儲(chǔ)技術(shù)實(shí)現(xiàn)部分。

      5.1 基于區(qū)塊鏈的證件信息存儲(chǔ)實(shí)現(xiàn)

      首先為了更好地管理用戶信息,系統(tǒng)利用C++的面對(duì)對(duì)象的思想,創(chuàng)建了一個(gè)Peron類(lèi)來(lái)實(shí)現(xiàn),在類(lèi)中定義了許多與用戶信息相關(guān)的數(shù)據(jù)成員,而相關(guān)的數(shù)據(jù)成員的定義如下所示:

      string Name;//名字

      string PhoneNumber;//電話號(hào)碼

      string QuestionAnswer[__PersonQuestionNumber];//密保問(wèn)題

      string BornInformation;//出生信息

      string Email;//郵箱信息

      string LiveAdress;//居住地址

      vectorPhotoInfo;//面部信息,用vector+string來(lái)存儲(chǔ),方便拓展

      int ID;//每個(gè)人的id

      除此之外系統(tǒng)定義了Set和Get方法來(lái)實(shí)現(xiàn)用戶數(shù)據(jù)成員的賦值與獲取。之后便是區(qū)塊鏈技術(shù)的關(guān)鍵類(lèi)Block類(lèi),這個(gè)類(lèi)能夠?qū)崿F(xiàn)區(qū)塊的構(gòu)造和相關(guān)信息的處理。對(duì)于Block類(lèi),本文介紹幾個(gè)關(guān)鍵的成員函數(shù)。Block()是類(lèi)的構(gòu)造函數(shù),用來(lái)生成新區(qū)塊的同時(shí)對(duì)這個(gè)區(qū)塊進(jìn)行初始化,具體代碼如下:

      Block(){

      srand(time(0));

      LimitSize=rand()%9+8;

      mxsize=4;

      RandomNumber=rand();//Create Random number tree=NULL;

      tree->Construct(0,(1<

      }

      從這個(gè)構(gòu)造函數(shù)中可以發(fā)現(xiàn),在初始化LimitSize和RandomNumber這兩個(gè)數(shù)據(jù)成員時(shí)用的是rand()函數(shù),可見(jiàn)隨機(jī)性強(qiáng),安全性也有所提高。Block中定義了InsertInfo(Person Add)是關(guān)鍵成員函數(shù),用于將被認(rèn)證后的用戶的證件信息插入?yún)^(qū)塊之中,具體代碼如下所示:

      void Block::InsertInfo(Person Add){

      if(List.size()+1>(1<

      tree->Delete(tree);

      tree=NULL;

      ++mxsize;

      tree->Construct(0,(1<

      int cur=0;

      for(auto it:List)Modify(cur++,it.GetUnionInfo

      ());}

      List.push_back(Add);

      Map[Add.GetName()].emplace_back(Add);

      Modify(List.size()-1,Add.GetUnionInfo());

      }

      系統(tǒng)的Block中用了STL中的順序性容器list來(lái)進(jìn)行二次包裝構(gòu)成區(qū)塊鏈,這一點(diǎn)可以從代碼中直接看出來(lái),同時(shí)從代碼中可以發(fā)現(xiàn)List.push_back(Add),從這語(yǔ)句中可以了解到系統(tǒng)的證書(shū)信息是插入到區(qū)塊的尾部。

      SearchInfo(Preson Ax)函數(shù)是用來(lái)查詢用戶信息是否已經(jīng)存在,存在返回True,不存在返回False。具體代碼如下所示:

      bool Block::SearchInfo(Person Ax){

      for(auto it:List)

      if(it==Ax)

      return true;

      return false;

      }

      Block類(lèi)中還有一個(gè)關(guān)鍵函數(shù)就是GetInfo(string Name)函數(shù),該方法主要作用是從區(qū)塊的索引表中查詢某個(gè)人的所有相關(guān)信息,并存儲(chǔ)在vector中返回,具體實(shí)現(xiàn)代碼如下:

      vectorBlock::GetInfo(string Name){

      return Map[Name];

      }

      事實(shí)上在實(shí)現(xiàn)Block類(lèi)之前系統(tǒng)還需要先用于實(shí)現(xiàn)存儲(chǔ)證件信息的哈希樹(shù)類(lèi)TreeNode類(lèi)。而TreeNo?de類(lèi)的關(guān)鍵方法Construct(int l,int r,Block::TreeNode*ptr)用于遞歸的構(gòu)造區(qū)間范圍在[1,r]的哈希樹(shù),并將根指針存儲(chǔ)在帶入的參數(shù)中,具體實(shí)現(xiàn)代碼如下所示:void Block::TreeNode::Construct(int l,int r,Block::TreeNode*ptr){

      if(ptr==NULL){

      ptr=new TreeNode(l,r);sm3_starts(&ptr->ctx);}

      if(l

      int mid=l+r>>1;ptr->lft=new TreeNode(l,mid);

      ptr->rht=new TreeNode(mid+1,r);

      Construct(l,mid,ptr->lft);Construct(mid+1,r,ptr->rht);}

      }

      5.2 SM 3算法實(shí)現(xiàn)

      最后,在這一部分將會(huì)簡(jiǎn)單介紹SM3算法,SM3雜湊算法能夠安全的對(duì)數(shù)據(jù)進(jìn)行摘要處理,適用于商用密碼應(yīng)用中的數(shù)字簽名和驗(yàn)證、消息認(rèn)證碼的生成與驗(yàn)證以及隨機(jī)數(shù)的生成,可滿足多種密碼應(yīng)用的安全需求。而系統(tǒng)中國(guó)密SM3算法是為了將證件信息轉(zhuǎn)換為哈希樹(shù)中的哈希值。國(guó)密SM3算法采用C語(yǔ)言實(shí)現(xiàn),關(guān)鍵函數(shù)下表1所示。

      6 結(jié)語(yǔ)

      最后經(jīng)實(shí)驗(yàn)仿真和實(shí)際測(cè)試,本系統(tǒng)能成功實(shí)現(xiàn)賬號(hào)的注冊(cè)、登錄,上傳、刪除個(gè)人證件等主要功能,并且服務(wù)器能及時(shí)進(jìn)行區(qū)塊鏈數(shù)據(jù)恢復(fù)。人臉識(shí)別的登錄機(jī)制讓用戶信息更加安全。能夠部署到手機(jī)上的客戶端使得系統(tǒng)的使用更為便捷。該綜合設(shè)計(jì)課題能夠充分培養(yǎng)學(xué)生使用區(qū)塊鏈技術(shù)、加密技術(shù)等多方面的技術(shù)創(chuàng)新性的綜合設(shè)計(jì)與實(shí)現(xiàn)系統(tǒng)的能力。

      表1 國(guó)密SM3算法關(guān)鍵函數(shù)

      猜你喜歡
      證件哈希課程設(shè)計(jì)
      因應(yīng)聘證件引發(fā)的勞動(dòng)糾紛
      龍鳳元素系列課程設(shè)計(jì)
      學(xué)院成功舉辦2017年伊朗出入境證件識(shí)別培訓(xùn)班
      基于OpenCV與均值哈希算法的人臉相似識(shí)別系統(tǒng)
      基于Articulate Storyline的微課程設(shè)計(jì)與開(kāi)發(fā)
      基于維度分解的哈希多維快速流分類(lèi)算法
      基于自動(dòng)化系統(tǒng)的PLC課程設(shè)計(jì)
      基于同態(tài)哈希函數(shù)的云數(shù)據(jù)完整性驗(yàn)證算法
      開(kāi)放大學(xué)課程設(shè)計(jì)與資源開(kāi)發(fā)
      一種基于Bigram二級(jí)哈希的中文索引結(jié)構(gòu)
      404 Not Found

      404 Not Found


      nginx
      潢川县| 定边县| 新化县| 同心县| 平度市| 鄂托克旗| 奉化市| 海丰县| 江门市| 尉犁县| 广平县| 托里县| 平潭县| 合水县| 永登县| 呈贡县| 浠水县| 什邡市| 华蓥市| 留坝县| 高邑县| 永善县| 工布江达县| 龙游县| 阿克苏市| 烟台市| 广德县| 庆阳市| 台江县| 绥宁县| 尼木县| 乌鲁木齐县| 宁蒗| 陵川县| 中山市| 湖北省| 池州市| 仁布县| 闻喜县| 青河县| 晴隆县|