㈠ 有Java基礎,想學區塊鏈
有程序開發基礎的話,入門區塊鏈會很快,比AI容易的多。它的核心思想就三點:
1、去中心化思想
2、分布式賬本
3、基於通證的激勵機制
開發人員建議從去中心化應用(DApp)開發入手,因為它有目前最好的開發生態。當理解了區塊鏈的思想之後,可以根據需要再深入底層技術。
㈡ 求javap2p聊天工具代碼
JAVA賀新年-自己動手做QQ(P2P聊天工具含源碼) - Dreamcode ~ ...
區塊鏈中的消息傳播離不p2p通信 java實現一個簡單的p2p通信demo工具: idea jdk1.8 maven1 : idea新建maven項...
㈢ 浙江北大青鳥:區塊鏈跟Java有什麼關系
區塊鏈是什麼呢?人們對區塊鏈是興趣越發的濃厚,人們也發現,區塊鏈跟Java存在不一般的關系,區塊鏈跟Java有什麼關系?今天就跟浙江IT培訓http://www.kmbdqn.cn/一起來討論下吧。
一、區塊鏈是什麼?區塊鏈(Blockchain)是比特幣的底層技術,像一個資料庫賬本,記載所有的交易記錄。
這項技術也因其安全、便捷的特性逐漸得到了銀行與金融業的關注。
區塊鏈是一串使用密碼學方法相關聯產生的數據塊,每一個數據塊中包含了過去十分鍾內所有比特幣網路交易的信息,用於驗證其信息的有效性(防偽)和生成下一個區塊。
二、區塊鏈跟Java有什麼關系?我們知道Java是門高端的計算機開發編程語言,Java具有簡單性、面向對象、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點,從而被人們廣泛的應用。
區塊鏈我們可以看到它在比特幣是個相當重要的存在部分,安全性要求特別高,所以Java因為其獨特的特性,被用來進行實現區塊鏈。
我們知道Java是世界上應用最廣泛的編程語言,從Java應用領域上來分,主要表現三個方面:一是大中型商業應用、二是桌面應用(常說的c/s應用)、三是移動領域應用。
你沒有想過現在被大家炒的火熱的比特幣跟Java竟然也有關聯吧,這也難怪,大家都比較偏愛Java編程語言。
㈣ javaweb中怎麼加入區塊鏈技術
什麼是區塊鏈?區塊鏈技術應用?
什麼是區塊鏈?區塊鏈本質上是一個去中心化的分布式賬本資料庫,是比特幣的底層技術,和比特幣是相伴相生的關系。區塊鏈本身其實是一串使用密碼學相關聯所產生的數據塊,每一個數據塊中包含了多次比特幣網路交易有效確認的信息。
每當有加密交易產生時,網路中有強大運算能力的礦工就開始利用演算法解密驗證交易,創造出新的區塊來記錄最新的交易。新的區塊按照時間順序線性地被補充 到原有的區塊鏈末端,這個帳本就會不停的增長和延長。
通過復雜的公共鑰匙和私人鑰匙的設置,區塊鏈網路將整個金融網路的所有交易的賬本實時廣播,實時將交易記錄分發到每一個客戶端中,同時還能保證每個人只能對自己的財產進行修改。當然,賬本里也有別人的交易記錄,雖然你可以看到數值和對應的交易地址(基本上這是由一段冗長的亂序字母和數字組成),但是如果不借用其他技術手段你也根本無法知道交易者的真實身份。
什麼是區塊鏈?自去年開始,區塊鏈的概念開始被捧紅,尤其在一些發達國家,更是受到了明星級的熱捧。區塊鏈也被冠以了顛覆的名頭,大有風靡全球之勢。區塊鏈將最先沖擊金融行業,進而會影響到更為廣泛的經濟領域。預測依據了區塊鏈的幾個核心特點:去中心化、分布式賬本、點對點傳輸、不可被篡改等。由於區塊鏈的誕生頗具神奇色彩,其發展也是隨著比特幣在世界范圍的興起而受到了關注,因此很多人會混淆區塊鏈與比特幣的關系。有人認為區塊鏈與比特幣是父子關系,也有人認為區塊鏈的誕生在比特幣之後,但實際上,區塊鏈其實是比特幣的底層支持技術,可以比作為互聯網中的TCP/IP協議。從某個角度來看,比特幣可以看作是與區塊鏈同時產生的區塊鏈的第一個實際應用。
區塊鏈技術應用?布比區塊鏈自成立以來一直專注於區塊鏈技術與產品的研發與創新,擁有多項核心技術,並在多個方面取得了實質性的創新,形成多項核心技術成果,例如:可數學證明的分布式共識技術、快速的大規模賬本存取技術、支持業務形態擴展的多鏈總賬技術、異構區塊鏈間的互聯技術等。4月25日,「格格積分」將積分系統引入區塊鏈概念,多方聯合開放,積分發行及兌換,促進積分流通。各合作機構可共同參與交易驗證、賬本存儲、實時結算;企業積分發行方的第三方支付平台,使積分進出更靈活。布比開發了自有的區塊鏈基礎服務平台,已在股權、供應鏈、積分、信用等領域開展應用。布比一直致力於以去(多)中心信任為核心,構建開放式價值流通網路,讓數字資產自由流動起來。
什麼是區塊鏈?區塊鏈技術應用?我們可以借用比特幣來描述一下區塊鏈的幾個應用前景。比特幣可以說是一個去中心化的貨幣或者資產。每一個比特幣都能夠被追溯並被所有人隨時查詢到。這個應用前景意味著,如果人們之間的交易可以從現在的以貨幣為價值衡量手段回到原始的物物交換的形式,那麼衡量價值的尺度不再是法定的貨幣,而是比特幣或者是由區塊鏈產生的其他虛擬貨幣或者虛擬資產來衡量,現在的共享經濟所給我們帶來的好處僅僅只是冰山一角。比特幣的這種可被追溯、被查詢且不可篡改的特性如果應用到信用記錄系統、身份認證系統或產權認證系統中,那麼許多諸如證明「這個房子是我的財產嗎?」「我是未婚還是已婚」這一系列的難題將根本不復存在。按照目前的發展趨勢,區塊鏈不僅會重塑貨幣市場、支付系統、金融服務及經濟形態的方方面面,而且會改變人類生活的每個領域。
㈤ java課程分享組成區塊鏈基礎運算功能的組織架構內容
隨著互聯網的都不發展,消費者對區塊鏈技術和數字虛擬貨幣的認知程度也在不斷的提高。今天,我們就一起來了解一下區塊鏈技術的基礎運算方法都有哪些結構構成的。下面java課程http://www.kmbdqn.com/就一起來了解一下具體情況吧。
構成計算技術的基本元素是存儲、處理和通信。大型主機、PC、移動設備和雲服務都以各自的方式展現這些元素。各個元素之內還有專門的構件塊來分配資源。
本文聚焦於區塊鏈的大框架:介紹區塊鏈中各個計算元素的模塊以及各個模塊的一些實現案例,偏向概論而非詳解。
區塊鏈的組成模塊
以下是去中心化技術中各個計算元素的構件塊:
存儲:代幣存儲、資料庫、文件系統/blob
處理:有狀態的業務邏輯、無狀態的業務邏輯、高性能計算
通信:數據、價值和狀態的連接網路
存儲
作為基本計算元素,存儲部分包含了以下構件塊。
代幣存儲。代幣是價值的存儲媒介(例如資產、證券等),價值可以是比特幣、航空里程或是數字作品的版權。代幣存儲系統的主要作用是發放和傳輸代幣(有多種變體),同時防止多重支付之類的事件發生。
比特幣和Zcash是兩大「純凈」的、只關注代幣本身的系統。以太坊則開始將代幣用於各種服務,以實現其充當全球計算中心的理想。這些例子中代幣被用作運營整個網路架構的內部激勵。
還有些代幣不是網路用來推動自身運行的內部工具,而是用做更高級別網路的激勵,但它們的代幣實際上是存儲在底層架構中的。一個例子是像Golem這樣的ERC20代幣,運行在以太坊網路層上。另一個例子是Envoke的IP授權代幣,運行在IPDB網路層上。
資料庫。資料庫專門用來存儲結構化的元數據,例如數據表(關系型資料庫)、文檔存儲(例如JSON)、鍵值存儲、時間序列或圖資料庫。資料庫可以使用SQL這樣的查詢快速檢索數據。
傳統的分布式(但中心化)資料庫如MongoDB和Cassandra通常會存儲數百TB甚至PB級的數據,性能可達到每秒百萬次寫入。
SQL這樣的查詢語言是很強大的,因為它將實現與規范區分開來,這樣就不會綁定在某個具體的應用上。SQL已經作為標准應用了數十年,所以同一個資料庫系統可以用在很多不同的行業中。
換言之,要在比特幣之外討論一般性,不一定要拿圖靈完備性說事。你只需要一個資料庫就夠了,這樣既簡潔又方便擴展。有些時候圖靈完備也是很有用的,我們將在「去中心化處理」一節具體討論。
BigchainDB是去中心化的資料庫軟體,是專門的文檔存儲系統。它基於MongoDB(或RethinkDB),繼承了後者的查詢和擴展邏輯。但它也具備了區塊鏈的特徵,諸如去中心化控制、防篡改和代幣支持。IPDB是BigchainDB的一個受監管的公開實例。
在區塊鏈領域,也可以說IOTA是一個時間序列資料庫。
文件系統/blob數據存儲。這些系統以目錄和文件的層級結構來存儲大文件(電影、音樂、大數據集)。
IPFS和Tahoe-LAFS是去中心化的文件系統,包含去中心化或中心化的blob存儲。FileCoin、Storj、Sia和Tieron是去中心化的blob存儲系統,古老而出色的BitTorrent也是如此,雖然後者使用的是p2p體系而非代幣。以太坊Swarm、Dat、Swarm-JS基本上都支持上述兩種方式。
數據市場。這種系統將數據所有者(比如企業)與數據使用者(比如AI創業公司)連接在一起。它們位於資料庫與文件系統的上層,但依舊是核心架構,因為數不清的需要數據的應用(例如AI)都依賴這類服務。Ocean就是協議和網路的一個例子,可以基於它創建數據市場。還有一些特定應用的數據市場:EnigmaCatalyst用於加密市場,Datum用於私人數據,DataBrokerDAO則用於物聯網數據流。
處理
接下來討論處理這個基本計算元素。
「智能合約」系統,通常指的是以去中心化形式處理數據的系統[3]。它其實有兩個屬性完全不同的子集:無狀態(組合式)業務邏輯和有狀態(順序式)業務邏輯。無狀態和有狀態在復雜性、可驗證性等方面差異巨大。三種去中心化的處理模塊是高性能計算(HPC)。
無狀態(組合式)業務邏輯。這是一種任意邏輯,不在內部保留狀態。用電子工程術語來說,它可以理解為組合式數字邏輯電路。這一邏輯可以表現為真值表、邏輯示意圖、或者帶條件語句的代碼(if/then、and、or、not等判斷的組合)。因為它們沒有狀態,很容易驗證大型無狀態智能合約,從而創建大型可驗證的安全系統。N個輸入和一個輸出需要O(2^N)個計算來驗證。
跨賬本協議(ILP)包含crypto-conditions(CC)協議,以便清楚地標出組合電路。CC很好理解,因為它通過IETF成為了互聯網標准,而ILP則在各種中心和去中心化的支付網路(例如超過75家銀行使用的瑞波)中廣泛應用。CC有很多獨立實現的版本,包括JavaScript、Python、Java等。BigchainDB、瑞波等系統也用CC,用以支持組合式業務邏輯/智能合約。
㈥ 如何要打造區塊鏈平台
在很多區塊鏈商業應用的案例中,我們總能看到BaaS這個字眼,BaaS是Blockchain as a Service的縮寫,中文譯為「區塊鏈即服務」。那麼區塊鏈即服務BaaS究竟是什麼?我們就帶著這個疑問跟隨著人人鏈區塊鏈技術團隊的小王來仔細的探討下。
據小王介紹:區塊鏈即服務BaaS主要是由微軟、IBM兩個巨頭提出的概念,說白了它其實就是一種新型的雲服務,一種結合區塊鏈技術的雲服務。比如微軟的Azure雲計算平台、IBM的Bluemix Garage雲平台都提供區塊鏈即服務BaaS。
區塊鏈即服務BaaS是微軟、IBM這些企業從自己的雲服務網路中開辟出一個空間,用來運行某個區塊鏈節點。和普通節點及交易所節點相比,BaaS節點的用途主要是:快速建立自己所需的開發環境,提供基於區塊鏈的搜索查詢、交易提交、數據分析等一系列操作服務,這些服務既可以是中心化的,也可以是非中心化的,用來幫助開發者更快地驗證自己的概念和模型。BaaS節點的服務性體現在:工具性更強,便於創建、部署、運行和監控區塊鏈。
㈦ 區塊鏈核心技術-P2P網路
點對點網路是區塊鏈中核心的技術之一,主要關注的方面是為區塊鏈提供一個穩定的網路結構,用於廣播未被打包的交易(交易池中的交易)以及共識過的區塊,部分共識演算法也需要點對點的網路支撐(如PBFT),另外一個輔助功能,如以太坊的消息網路,也需要點對點網路的支持。
P2P網路分為結構化和非結構化網路兩類。結構化網路採用類似DHT演算法來構建網路結構;非結構化網路是一種扁平的網路,每個節點都有一些鄰居節點的地址。
點對點網路的主要職責有維護網路結構和發送信息這兩個方面。網路結構要關注的是新節點的加入和網路更新這兩個方面,而發送信息包括廣播和單播兩個方面
如何建立並維護點對點的整個網路?節點如何加入、退出?
網路結構的建立有兩個核心的參數,一個是每個節點向外連接的節點數,第二個是最大轉發數。
新節點對於整個網路一無所知,要麼通過一個中心的服務獲取網路中的一些節點去連接,要麼去連接網路中的「種子」節點。
網路更新處理當有新節點加入或者節點退出,甚至原來一些節點網路不好,無法連接,過一段時間又活了,等等這些情況。一般通過節點已有的連接來廣播這些路由表的變化。需要注意的是,因為點對點網路的特殊性,每個節點的路由表是不一樣的(也叫partial view)
廣播一般採用泛洪協議,即收到轉發方式,使的消息在網路中擴散,一般要採用一些限制條件,比如一條消息要設置最大的轉發數,避免網路的過渡負載。
單播需要結構化網路結構支持,一般是DHT,類似於DNS解析的方式,逐跳尋找目標節點地址,之後進行傳輸,並且更新本地路由表。
要想快速檢索信息,有兩種數據結構可以使用,一種是樹類型,如AVL樹、紅黑樹、B樹等;另外一類是hash表。
哈希表的效率比樹更高,但是需要佔用更多的內存。
信息的表示採用鍵值對的方式,即一個鍵對應一個值,我們要查找的是key,值是附著的信息。
哈希表要解決的問題是如何均勻地為每一個key分配一個存儲位置。
這裡面有兩個重點:1.是為key分配一個存儲地點,這個分配演算法是固定的,保證存儲的時候和查找的時候使用同一個演算法,不然存進去之後會找不到;2.是均勻地分配,不能有點地方存放數據多,有點放存放數據少。
一般語言裡面的hashtable、map等結構使用這個技術來實現,哈希函數可以直接使用取模函數,key%n,這種方式,n代表有多少個地方,key是整數,如果key是其他類型,需要先進行一次哈希,將key轉為整數。這種方式可以解決上面的兩個需求,但是當n不夠大的時候(小於要存儲的數據),會產生沖突,一個地方一定會有兩個key要存儲,這時候,需要在這個地方放一個鏈表,將分配到同一地點、不同key,順序擺放。當一個地點放的key太多後,鏈表的查找速度太慢,要轉化為樹類型結構(紅黑樹或者AVL樹)。
上面說過,哈希表效率很高,但是佔用內容,使用多台機器就可以解決這個限制。在分布式環境中,可以將上述的地點理解為計算機(後面成為節點),即如何將一個key映射到一個節點上,每個節點有一個節點ID,即key->node id的映射,這個映射演算法也要固定。
這個演算法還有一個非常重要的要求,即scalebility,當新節點加入和退出時候,需要遷移的key要盡量少。
這個映射演算法有兩種典型結構,一個是環形,一個是樹形;環形的叫一致性哈希演算法,樹形的典型叫kademlia演算法。
選點演算法就是解決key->node id的映射演算法,形象的來說就是為一個key選擇它生命中的她(節點)。
假設我們使用32哈希,那麼總共能容納的key的數據量是2**32,稱之為hash空間,把節點的ID映射成整數,key也映射成整數。把key哈希和節點哈希值接的差值的叫做距離(負數的話要取模,不用絕對值),比如一個key的哈希是100(整數表示),一個節點的哈希是105,則這兩個的距離是105-100=5。當然使用其他距離表示也可以,比如反過來減,但是演算法要固定。我們把key映射(放到)距離他最近的節點上。距離取模的話,看起來就是把節點和key放到一個環上,key歸屬到從順時針角度離它最近的節點上。
kademlia演算法的距離採用的是key哈希與節點哈希異或計算之後的數值來表示(整數),從左往右,擁有越多的「相同前綴」,則距離越近,越在左邊位置不一樣,距離越遠。
樹結構的體現是,將節點和key看成樹的節點,這個演算法支持的位數是160bit,即20個8位元組,樹的高度為160,每個邊表示一位。
選點的演算法和一致性哈希相同,從所有節點中,選擇一個距離key距離最小的節點作為這個key的歸宿。
由於是在分布式環境中,為了保證高可用,我們假設沒有一個中心的路由表,沒有這個可以看到全貌的路由表,帶來了一些挑戰,比如如何發現節點、查找節點?
在P2P網路中,常用的方法是每個節點維護一個部分路由表,即只包含部分節點的路由信息。在泛洪演算法中,這些節點上隨機的;在DHT演算法中,這個路由表是有結構的,維護的節點也是有選擇性的。那麼如何合理的選擇需要維護路由信息的節點呢?
一個樸素的做法是,每一個節點保存比他大的節點的信息,這樣可以組成一個環,但是這樣做的話,有一個大問題和一個小問題。大問題是,每個節點知道的信息太少(只有下一個節點的哈希和地址),當給出一個key時,它不知道網路中還有沒有比它距離這個key距離還短的節點,所以它首先判斷key是否屬於自己和下一個節點,如果是,那麼這個key就屬於下一個節點,如果不是就調用下一個節點同樣的方法,這個復雜度是N(節點數)。一個優化的方法是,每個節點i維護的其他節點有:i+2 1, i+2 2,....i+2**31,通過觀察這個數據,發現由近到遠,節點越來越稀疏。這樣可以把復雜度降低到lgN
每個節點保存的其他節點的信息,包括,從左到右,每一位上與本節點不同的節點,最多選擇k個(演算法的超參數)。比如在節點00110上(為演示起見,選擇5位),在要保存的節點路由信息是:
1****: xxx,....,xxx(k個)
01 : xxx,....,xxx(k個)
000 : xxx,....,xxx(k個)
0010 : xxx,....,xxx(k個)
00111: xxx,....,xxx(k個)
以上為一行稱為k-bucket。形象的來看,也是距離自己越近,節點越密集,越遠,節點越稀疏。這個路由查找、節點查找的演算法也是lgN復雜度。
㈧ 怎麼理解區塊鏈的P2P
對於P2P這個概念想必大家都很熟悉,第一反應就是網路借貸,其實在區塊鏈的世界P2P是指對等網路。
對等網路這個概念是在08年金融危機之後提出的,一個或者幾個化名為中本聰的人在網路上發表了一篇名為 《比特幣白皮書:一種點對點的電子現金系統》的論文,於是一大波技術極客被吸引湊在了一起,他們不斷完善了比特幣系統,最終還發現了區塊鏈。
中本聰在論文里說:在點對點電子現金支付系統中,第三方是沒有價值的。
這里是我理解的去中心化。
我們不確定他們的最終目的,也許是改變世界改變未來?不過這樣的技術發明確實是站在了傳統中心化控制的對立面。
如何理解這個對等網路?
它們對傳統行業會產生哪些影響?
以之前p2p暴雷潮為例。
2018年,自六月份起,可能是p2p行情最為嚴峻的一段時間,每天都有平均5個左右的平台暴雷,許多暴雷平台的投資人或惶惶不可終日,或奔走在維權的路上。網上一搜,慘狀一片。
我們現在回想一下當初我們看好一個平台准備投資時需要做的事情。假設它不是一個資金盤。
注冊,綁銀行卡,身份證實名,充值,這時候你的錢都存到平台上了,然後平台將資金出借給事先對接好並核實身份的借款人,如果你投的一個月,每月時間到期你可以選擇取回本金和坐收當月利息,或者不取出來可以繼續在裡面投標。
再舉一個息息相關的例子
我們平時在淘寶上網購的時候,首先需要綁卡充值購物貨款打給支付寶,確認收貨後,支付寶把你的錢打給商家。這筆交易完成。
分析以上兩個例子就會發現。在我們投資或者交易之前,我們的個人私密信息都是要先透露給第三方,你當初看好後選擇的平台和阿里就充當了信用背書的作用。
在交易的那一刻,潛意識里,我們已經把平台和阿里當成是一個,絕對保證我們個人信息不被泄露以及能夠保證我們的資金安全的平台。
這個時候我們交易的基礎是基於信任。
阿里強大的公眾影響力,姑且認為它跑路和違背信譽的可能性比p2p要低。但是假設,我是說假設,這些巨頭保存的我們的資料和巨額的資產遭受到黑客的攻擊。這樣龐大的數據如果泄露,肯定我們自身有遭受損失的風險,而且完全不受我們控制。
p2p更不用說,圈錢跑路,企業公布的信息不實,或者企業對借款人的信息本身核實不嚴格,給本來該誠實公開給投資人的信息上了一層層的枷鎖,風險自是不必說。
因此,再來理解中本聰提出來的在論文里說:在點對點電子現金支付系統中,第三方是沒價值的這句話。
區塊鏈裡面的點對點(p2p),就是去中心化或者是弱中心化,將傳統行業里掌握大部分數據的中間節點這樣的概念弱化,使得一個區塊鏈網路的所有節點在功能上都是平等的,每一個節點可以對其他節點提供服務,也可以利用其他節點為自己提供服務。
並且這樣的一個行為發生時全網自動廣播備份,也就是記在賬本上,每一個人都會知道有這樣一件事,如果一個人想要賴賬,他必須去更改超過網路中半數以上的賬本,成本巨大,無法賴賬,保證了區塊鏈系統數據的安全。
區塊鏈的去中心化、安全、共享透明、高效、低成本等特徵使得其應用范圍將會非常廣,不過區塊鏈底層技術還不成熟,基礎設施還不完善,國內現在區塊鏈行業處在發展的早期階段,也有許多的陷阱,因此我們的注意力不該只放在幣價和行情,也更該多關注真正的區塊鏈技術
自身能力還不夠的情況下,對於煽動誘導性的投資行為一定要遠離,寧願錯過,也不要頭腦發熱以金犯險。
原文鏈接: https://www.kg.com/article/490959733117816832
㈨ java區塊鏈怎麼實現
java區塊鏈代碼實現
哈希樹的跟節點稱為Merkle根,Merkle樹可以僅用log2(N)的時間復雜度檢查任何一個數據元素是否包含在樹中:
package test;
import java.security.MessageDigest;
import java.uTIl.ArrayList;
import java.uTIl.List;
public class MerkleTrees {
// transacTIon List
List《String》 txList;
// Merkle Root
String root;
/**
* constructor
* @param txList transacTIon List 交易List
*/
public MerkleTrees(List《String》 txList) {
this.txList = txList;
root = 「」;
}
/**
* execute merkle_tree and set root.
*/
public void merkle_tree() {
List《String》 tempTxList = new ArrayList《String》();
for (int i = 0; i 《 this.txList.size(); i++) {
tempTxList.add(this.txList.get(i));
}
List《String》 newTxList = getNewTxList(tempTxList);
while (newTxList.size() != 1) {
newTxList = getNewTxList(newTxList);
}
this.root = newTxList.get(0);
}
/**
* return Node Hash List.
* @param tempTxList
* @return
*/
private List《String》 getNewTxList(List《String》 tempTxList) {
List《String》 newTxList = new ArrayList《String》();
int index = 0;
while (index 《 tempTxList.size()) {
// left
String left = tempTxList.get(index);
index++;
// right
String right = 「」;
if (index != tempTxList.size()) {
right = tempTxList.get(index);
}
// sha2 hex value
String sha2HexValue = getSHA2HexValue(left + right);
newTxList.add(sha2HexValue);
index++;
}
return newTxList;
}
/**
* Return hex string
* @param str
* @return
*/
public String getSHA2HexValue(String str) {
byte[] cipher_byte;
try{
MessageDigest md = MessageDigest.getInstance(「SHA-256」);
md.update(str.getBytes());
cipher_byte = md.digest();
StringBuilder sb = new StringBuilder(2 * cipher_byte.length);
for(byte b: cipher_byte) {
sb.append(String.format(「%02x」, b&0xff) );
}
return sb.toString();
} catch (Exception e) {
e.printStackTrace();
}
return 「」;
}
/**
* Get Root
* @return
*/
public String getRoot() {
return this.root;
}
}