国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

如何在NEO區塊鏈上實現信息加密

darcrand / 447人閱讀

摘要:首先,和擁有一對密鑰,接著,和互換公鑰,與互換公鑰互換公鑰后便可使用一種稱為橢圓曲線密鑰交換體制見維基百科的常見技術創建雙方的共享密鑰。上文僅是的基本介紹,下文將講解怎樣使用為區塊鏈上的信息加密。

你或許已經知道,區塊鏈上的交易大多都是透明公開的,用戶既可以直接通過RPC查詢NEO節點,也可以使用NEOTracker或NEOScan等方便好用的區塊鏈瀏覽器瀏覽交易記錄、余額、智能合約或區塊鏈上的其他數據。但是,開發某些應用時必須考慮到隱私性,通訊應用就是個典型的例子。如果你想給某人發送一條信息,你想必不希望其他人看到這條信息,因為其中可能包含一些敏感內容。本文筆者將分享一些NEO區塊鏈信息加密的基本知識。

首先讓我們再來研究一下NEO區塊鏈交易的剖析圖。

NEO交易

上圖顯示的是交易的基本內存結構。當用戶在鏈上發送GAS或NEO時,錢包客戶端就會創建這個數據包并向全網廣播。如果你還想了解輕客戶端創建或交易基本結構的詳情,請參閱Andrei在Steemit上發布的《如何創建NEO輕客戶端——區塊鏈開發者的入門“毒品”》。

關于信息通訊,我們關注的只是緊隨輸入數據之后的元數據,但NEO交易還有一個鮮為人知的功能,即用戶可以給任何交易附加交易屬性。交易屬性是一個廣義的概念,基本上指額外的數據信息。所以用戶在發送任意數量的NEO或GAS時都可以在交易屬性域中附加信息。注:上述機制不適用于NEP-5代幣資產。

例如我可以給我的朋友發送0.0000001個GAS并附上信息“你好”。盡管我舉例說明的這則信息看似無關緊要,但它卻能永久地存儲在區塊鏈上,且無法刪除。但正如我之前所說的,如果每個人都能看到這則信息,那這則信息也失去了意義。所以我們應該怎樣防止信息泄漏呢?

回顧總結一下,我們希望實現以下目標:

上述操作理論上來說非常簡單,我可以創建一個密鑰來加密信息,然后把密鑰告訴朋友,接著他(她)就能使用密鑰來解密信息了。

但如果我想給10個甚至100個朋友發送信息呢?如果用創建密鑰的方法,我就需要為每個朋友創建一個密鑰,并追蹤所有密鑰,因為如果他們共用一個密鑰,那么他們就能互相解密信息了。此外,怎樣才能把我創建的密鑰安全地發送給朋友呢?

回顧總結一下,在區塊鏈上發送加密信息需要完成以下步驟:

生成密鑰

將密鑰告知朋友

使用密鑰加密信息

將加密信息附加在NEO交易的交易屬性域中并發送

創建新錢包涉及四個關鍵要素:公鑰、私鑰、NEO地址和WIF。

通過WIF或私鑰可以推斷公鑰和NEO地址,但反之卻不可行。下面我們就來看下怎樣使用這些要素來生成密碼。

我繼續沿用密碼學的經典案例Alice和Bob的故事。Alice想給Bob發送一條僅限他倆閱讀的信息,想要實現這點,Alice和Bob之間就得有一個共享密鑰。相當于步驟1-2的操作。

首先,Alice和Bob擁有一對密鑰,

接著,Alice和Bob互換公鑰,

Alice與Bob互換公鑰

互換公鑰后便可使用一種稱為橢圓曲線密鑰交換體制(ECDH)(見維基百科)的常見技術創建雙方的“共享密鑰”。(https://en.wikipedia.org/wiki...)

ECDH是一種匿名密鑰協商協議,密鑰對可基于此協議利用橢圓加密技術生成共享密鑰。

那么現在加密所需的所有要素都交代完畢。

使用公鑰和私鑰生成共享密鑰

我不會演示共享密鑰生成過程涉及的所有算法,請參考上方鏈接深入了解ECDH。

下方是我編寫的Go程序,演算結果如下(私鑰已移除)

Alice’sNEO adress = AQpkhLEdcvmBbBb1TAb7BeVyLTweHSfTe5
Bob’s NEO address = AH6Wd2j3d6BQhSDSSyGPjDKTgii2gxHLPW
Alice’s public key =03c8cbdc902fc302329132c56a8c9535f9c86952ddf539679fc1ba29091aaaf2da
Bob’s public key = 03c075742edf955c47700586a849b453b21ee5a50129546576b673579600aef557
Alice’s shared secret (Bob’s public key + Alice’s private key) =2e29b2afffecec017e3dd11e2061cae2a77957d9cc364cf7c837c8efc95f94d5
Bob’s shared secret (Alice’s public key + Bob’s private key) =2e29b2afffecec017e3dd11e2061cae2a77957d9cc364cf7c837c8efc95f94d5

結果顯示Alice和Bob的共享密鑰是完全一致的,故稱之為“共享密鑰”。

現在Alice和Bob可以使用衍生的共享密鑰和對稱密鑰算法(見維基百科:https://en.wikipedia.org/wiki...)(如高級加密標準,見維基百科:https://en.wikipedia.org/wiki...)來加密信息了。

使用共享密鑰加密信息

信息已安全加密亟待發送,這時我們將加密信息插入到NEO交易的交易屬性域中,得到的結果如下。

Alicesent QcwFUOqIaUY1heZi3eutnTMQUMy4EwrLyA== to Bob
Bob sent pZWXtZeg6-pTHlk2deInSDcL9NaVzZm-xUEUA8d__g== to Alice

在不解密的情況下,我們就無從得知Alice與Bob的對話內容,但如果沒有共享密鑰也就無法完成解密。

所幸Alice與Bob先前互換過公鑰,因此兩人對共享密鑰都有訪問權限,因此他們可以使用共享密鑰來解密對方發送的信息。

使用共享密鑰解密信息

這就是使用ECDH加/解密信息的方法。

回顧總結一下,Alice與Bob互換了公鑰,因此可生成完全一致的共享密鑰。共享密鑰可用來加解密各自的信息。上文僅是ECDH的基本介紹,下文將講解怎樣使用ECDH為NEO區塊鏈上的信息加密。

Bob可以給Alice發送0.00000001個GAS,并在交易屬性域0x02或0x03中附上他的公鑰。

鑒于Alice知道Bob的地址并且知道Bob給自己發送了一筆交易,因此應用程序應該可以從交易屬性數據中獲取Bob的公鑰。

她的應用可以使用Bob的公鑰和Alice的私鑰生成一個共享密鑰,使用共享密鑰加密信息,再將此加密信息放入交易屬性域oxfo中,同時將Alice的公鑰放入oxo2中。

收到交易信息后,Bob的應用可以抓取Alice附在交易屬性中的公鑰與加密信息,接著開始解密。

閱讀NEO網絡協議文檔了解交易屬性域的用法。(http://docs.neo.org/en-us/nod...)

上述流程的示意圖如下。

當然,這篇文章并不能手把手教大家開發一個NEO區塊鏈實時通訊應用,但有助于大家了解安全通訊的概念。

信息加密還有一個伴隨效應就是GAS的經濟效益,GAS的最小單位就是區塊鏈上發送加密信息所產生的費用。

希望通讀本文后你能對加密貨幣的加密技術有更深入的了解,如果你有任何問題,請隨時聯系我,我的twitter賬號是@imapisit,郵箱是apisit@o3.network。

感謝Andrei對本文的審校與編輯。

原文出處:https://medium.com/proof-of-w...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/42862.html

相關文章

  • NEO Python編譯器介紹

    摘要:編譯器介紹編譯器可將文件編譯為格式,在虛擬機中運行。編譯器支持語言子集語言子集與的關系類似于蟒蛇與蟒屬的關系。 showImg(https://segmentfault.com/img/bVbkVe2?w=800&h=480); neo-boa編譯器介紹 neo-boa編譯器可將Python文件編譯為.avm格式,在Neo虛擬機中運行。NEO虛擬機可在Neo區塊鏈上執行合約。 編譯器支...

    Vicky 評論0 收藏0
  • 開發NEO智能合約的步驟流程

    摘要:在社區開發的一些最新工具集的幫助下,出現了四步流程法,從而進一步加快了開發效率。兩步流程法傳統上來說,智能合約開發有兩步開發流程編碼和測試。四步工作流程法開發智能合約對于編輯和調試階段,我建議使用兩種方法和。 摘要:開發NEO智能合約的典型開發流程有兩個實際階段:編碼(在IDE中編碼并將源碼編譯為.avm文件)以及測試(在測試網上部署、調用、檢查結果)。這個工作流需要編譯和部署來調試任...

    I_Am 評論0 收藏0
  • 開發NEO智能合約的步驟流程

    摘要:在社區開發的一些最新工具集的幫助下,出現了四步流程法,從而進一步加快了開發效率。兩步流程法傳統上來說,智能合約開發有兩步開發流程編碼和測試。四步工作流程法開發智能合約對于編輯和調試階段,我建議使用兩種方法和。 摘要:開發NEO智能合約的典型開發流程有兩個實際階段:編碼(在IDE中編碼并將源碼編譯為.avm文件)以及測試(在測試網上部署、調用、檢查結果)。這個工作流需要編譯和部署來調試任...

    zhou_you 評論0 收藏0
  • 區塊如何改變AI

    摘要:區塊鏈旨在通過引入點對點連接這一概念來解決這個問題。最后,區塊鏈與不變性同義,這意味著數據是可追蹤和可審查的。區塊鏈使得這一過程變得相對容易了一些。為了解釋在區塊鏈網絡中查看或使用數據的權限被視為一項資產。 摘要: 區塊鏈和人工智能,這兩種常常被誤解的技術,它們怎樣增強數據處理能力?本文將對其進行詳細介紹。 點此查看原文: http://click.aliyun.com/m/42759...

    explorer_ddf 評論0 收藏0
  • 區塊如何改變AI

    摘要:區塊鏈旨在通過引入點對點連接這一概念來解決這個問題。最后,區塊鏈與不變性同義,這意味著數據是可追蹤和可審查的。區塊鏈使得這一過程變得相對容易了一些。為了解釋在區塊鏈網絡中查看或使用數據的權限被視為一項資產。 摘要: 區塊鏈和人工智能,這兩種常常被誤解的技術,它們怎樣增強數據處理能力?本文將對其進行詳細介紹。 點此查看原文: http://click.aliyun.com/m/42759...

    neuSnail 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<