(轉)以太坊 錢包 建立 導入 Keystore

最近閒來無事 研究了下以太坊錢包 下邊分享下html

準備工做 :git

        須要用到的加密:BIP32 BIP39 BIP44 SCRYPTgithub

        加密算法 githab地址web

        https://github.com/NovaCrypto/BIP32算法

        https://github.com/NovaCrypto/BIP39app

        https://github.com/NovaCrypto/BIP44dom

        https://github.com/wg/scrypt/ui

        官方依賴加密

        https://github.com/web3j/web3j.net

錢包建立 

        1,生成一個隨機的助記詞   

  StringBuilder sb = new StringBuilder();
    byte[] entropy = new byte[Words.TWELVE.byteLength()];
    new SecureRandom().nextBytes(entropy);
    new MnemonicGenerator(English.INSTANCE)
    .createMnemonic(entropy, sb::append);
    System.out.println(sb.toString());

        2,根據助記詞生成一個種子 (前兩步參考BIP39)

 byte[] seed = new SeedCalculator()
                     .withWordsFromWordList(English.INSTANCE)
                     .calculateSeed(mnemonicWordsInAList(助記詞List), passphrase);

        3 ,根據種子生成公私鑰 (web3j)//若是還須要對接比特幣等等其餘幣種 請去查看 BIP44 與BIP32 以前寫的是BIT44與32的 可是挺麻煩    

    ECKeyPair ecKeyPair= ECKeyPair.create(sha256(seed));

                輸出16進制go         

     ecKeyPair.getPrivateKey().toString(16)

     ecKeyPair.getPublicKey().toString(16)

          4,根據公鑰 私鑰 密碼 獲得 keystore (參考web3j)

              WalletFile walletFile = Wallet.create("錢包密碼", ecKeyPair,n,p);

                walletFile即錢包的keystore的實體 轉化成string 就是 keystore

                錢包地址=walletFile.getAddress();

        到此整個錢包就生成完畢了 咱們獲得了 公鑰 私鑰 地址 keystore 

錢包導入

        私鑰導入

            ECKeyPair.create(new BigInteger(mPrivateKey,16));

        助記詞導入

           經過助記詞獲得種子 而後再獲得公私鑰  看2-3步

        Keystore導入

               調用web3j中提供的方法

                Wallet.decrypt("密碼", WalletFile );

就這些 以太坊的錢包就完成了  

我在項目中 WalletFile walletFile = Wallet.create("錢包密碼", ecKeyPair,n,p);這一步出OOM了 

而後就放棄了wen3j提供的方法 本身從新封裝了一套 固然大部分仍是借鑑的web3j的

嘿嘿,上邊全部的方法其實都是別人已經封裝好的 我只是把他們梳理了一下 方便下後人

我本身從新封裝的部分就不貼了 

轉自:https://blog.csdn.net/u010123087/article/details/79608939

相關文章
相關標籤/搜索