Dapp-Development

如何使用私鑰加密消息

  • June 19, 2017

這些天我嘗試用 Parity 開發一個儲存圖像文件的 dapp。幾天前我問了一個關於私鑰的問題。有人說乙太坊每個賬戶都有一個私鑰,我可以用它來加密。

但是今天我試圖找到用私鑰加密的API。但我剛剛發現用公鑰加密,就像這個網站說:parity_encryptMessage

那麼如何使用乙太坊的私鑰呢?是否有任何 API 或其他東西可以用來加密消息?非常感謝~

你從來不用私鑰加密,你總是用公鑰加密,用私鑰解密。假設您正在尋找公鑰:要生成新的密鑰對,您可以使用ethkey。為簡單起見,我將從您的暱稱生成一個大腦錢包,以便您可以重複使用這些參數。不要在公共網路上使用它。

$ ethkey generate brain YangYifei
secret:  c3d09aa314f216b618c84b3592d4d6992096ad544158a511148450771882c16e
public:  8b22ba82b80cb8d9e5e6207cbd8039bdb84398aaa63e5dd0684786456cd69a7708d334c92c540ed1d1764736b51fdcb5b7b95540cc8663851a03da99862e305e
address: 0052afd86e17e4cf7163a619a4cc9724dd04506c

要對奇偶校驗執行相同操作,並直接將密鑰添加到您的節點以供以後使用,您可以使用parity_newAccountFromPhrase

$ curl --data '{"method":"parity_newAccountFromPhrase","params":["YangYifei","password1337"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545
{"jsonrpc":"2.0","result":"0x0052afd86e17e4cf7163a619a4cc9724dd04506c","id":1}

但請注意,我們還需要上面的公鑰ethkey。現在讓我為你加密一條消息,它需要十六進制的消息(使用ascii-to-hex 轉換器)和 64 字節的公鑰。現在將其提供給parity_encryptMessage

$ curl --data '{"method":"parity_encryptMessage","params":["0x8b22ba82b80cb8d9e5e6207cbd8039bdb84398aaa63e5dd0684786456cd69a7708d334c92c540ed1d1764736b51fdcb5b7b95540cc8663851a03da99862e305e","0x48656c6c6f2c2059616e67596966656921"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545
{"jsonrpc":"2.0","result":"0x04f0f2a86c0f172d1bc897c23af03d23e8a3d66b84eac9d201f942b11350b4e48e0abcc0dacff1fe75a6ee1b6caa2eb489126336146d38192e656a208c5f22575b94083909c157ce1e0b6182b11bc1aa845ee0f501c2c13134be2b143fe31dd1682ca0be95bdd33c0663c29b760a2ef31c3aa3d0309d79dcf55cae5ebfa50e74c706","id":1}

結果是您的加密消息。要解密它,您可以使用parity_decryptMessage進行解密,但這僅在您之前將此帳戶添加到 Parity 時才有效。

由於解密需要您的私鑰,您要麼必須使用personal_unlockAccount解鎖您的帳戶,要麼使用錢包的簽名者功能。

引用自:https://ethereum.stackexchange.com/questions/18143