Web3js
使用乙太坊公鑰和私鑰加密和解密消息(元遮罩客戶端)
我正在嘗試使用乙太坊私鑰和公鑰進行消息加密,例如 PGP,我在 github 上找到了這個 npm 模組,https://github.com/pubkey/eth-crypto#encryptwithpublickey,它可以讓你從私鑰獲取公鑰密鑰,用公鑰加密消息,用私鑰解密消息。我正在使用 MetaMask 作為我的 dapp 的 web3 界面,並且我正在嘗試使消息加密無縫工作。但是,我找不到將 MetaMask 預設帳戶的私鑰自動傳遞給 npm 模組的方法,而不是從 MetaMask 的擴展 UI 中手動點擊導出私鑰。
Metamask 作為產品的重點是永遠不要將私鑰暴露給使用者瀏覽到的 Web 應用程序。為了讓您使用該特定工具以自定義方式加密數據,作為外掛的 Metamask 需要包含一個鉤子以使 Web 應用程序傳入要加密的數據,並將 Metamask 用於加密本身。
這類似於簽署消息的想法;有一個使用私鑰簽署給定消息的既定標準,Metamask 提供了一個鉤子,允許應用程序開發人員向 Metamask 發送字元串並讓它簽署字元串並返回簽名,從不暴露私鑰。
您可能希望對您的應用程序採用的方法不是使用 Metamask,而是創建一個與 Metamask 具有相同作用的實用程序(本身就是一個乙太坊錢包),以便它接收私鑰(或助記詞),然後有可用的密鑰為使用者加密數據。