(转)以太坊 钱包 创建 导入 Keystore
最近闲来无事 研究了下以太坊钱包 下边分享下
准备工作 :
需要用到的加密:BIP32 BIP39 BIP44 SCRYPT
加密算法 githab地址
https://github.com/NovaCrypto/BIP32
https://github.com/NovaCrypto/BIP39
https://github.com/NovaCrypto/BIP44
https://github.com/wg/scrypt/
官方依赖
https://github.com/web3j/web3j
钱包创建
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
(转)以太坊 钱包 创建 导入 Keystore的更多相关文章
- 以太坊钱包Geth使用命令
一.启动以太坊钱包Geth 打开一个控制台,执行同步区块命令 #同步测试链geth --fast --cache=512 --rpc --rpcapi personal,db,eth,net,web3 ...
- c#实战开发:用.net core开发一个简单的Web以太坊钱包 (六)
今天就来开发一个C# 版的简易钱包 先回顾以前的内容 c#实战开发:以太坊Geth 命令发布智能合约 (五) c#实战开发:以太坊Geth 常用命令 (四) c#实战开发:以太坊钱包快速同步区块和钱包 ...
- 牛奶ddw如何通过以太坊钱包实现互相打赏
很多朋友不清楚如何转账ddw,但是万能的网友是无敌的,这两天就自己摸索的一点经验总结下今天的转账经验. 1. 提取到自己的账户 这个大家都知道如何操作,使用官方的钱包 在“日日盈app”中点击&quo ...
- [币严区块链]数字货币交易所之以太坊(ETH)钱包对接(四) 使用web3j对接以太坊钱包
本文给大家介绍了 Web3j Java 版本的框架的基本使用,大家可根据本文的内容进行扩展性的练习,对其他 API 的使用进行尝试. 使用web3j对接以太坊钱包 一.开发准备事项 启动 Geth 此 ...
- PPT分享 | 以太坊钱包分析与介绍
艾伯特AI人工智能(公众号:aibbtcom)按: (编者按:本文为姗姗来迟的Meetup系列推文.12月3日,林修平在亚太区以太坊社区培训与交流Meetup深圳站上跟我们分享了他对以太坊各种钱包模式 ...
- 以太坊钱包开发系列2 - 账号Keystore文件导入导出
以太坊去中心化网页钱包开发系列,将从零开始开发出一个可以实际使用的钱包,本系列文章是理论与实战相结合,一共有四篇:创建钱包账号.账号Keystore文件导入导出.展示钱包信息及发起签名交易.发送Tok ...
- nodejs 使用 ethers创建以太坊钱包
创建钱包创建钱包流程: 生成随机助记词 => 通过助记词创建钱包=>钱包信息和加密明文(私钥和密码加密) 导入钱包通过插件提供方法,根据助记词|keyStore|私钥,找到钱包信息(地址和 ...
- 以太坊钱包开发系列4 - 发送Token(代币)
以太坊去中心化网页钱包开发系列,将从零开始开发出一个可以实际使用的钱包,本系列文章是理论与实战相结合,一共有四篇:创建钱包账号.账号Keystore文件导入导出.展示钱包信息及发起签名交易.发送Tok ...
- 什么是以太坊私钥储存(Keystore)文件
进入keystore管理以太坊私钥的障碍很大,主要是因为以太坊客户端在直接的命令行或图形界面下隐藏了大部分的密码复杂性. 例如,用geth: $ geth account new Your new a ...
随机推荐
- Unity3D UGUI Shader画一个圆环
Shader "Unlit/NewUnlitShader" { Properties { _MainTex ("Texture", 2D) = "wh ...
- 智能文件选择列表—— bat 批处理
智能文件选择列表 *.wim @echo off setlocal enabledelayedexpansion title 智能文件选择列表 pushd %~dp0 & cd /d %~dp ...
- Flask web开发之路六
紧接着上篇文档,写模板继承和block,URL链接和加载静态文件 模板继承和block 项目结构 主app文件代码: from flask import Flask,render_template a ...
- html笔记篇-Sublime、Markdown
1.sublime优点:跨平台(Linux,Windows和Mac OS X). 体积小运行速度快. 支持编译功能 .支持大量的插件 2.sublime快速生成html文档: !+tab键 ...
- Java的各种打包方式
JAR (Java Archive file) 包含内容:class.properties文件,是文件封装的最小单元:包含Java类的普通库.资源(resources).辅助文件(auxiliary ...
- ssm,dubbo框架搭建得配置文件
在建立了parent,common,manager(pojo,mapper,sercie,web)的maven工程后,开始导入添加配置文件: pojo,mapper 最终会打成jar包,service ...
- iOS只给矩形两个边加圆角
- (void)updataTopCornerRadius { CGRect clipRect = CGRectMake(, , self.headPhotoIv.width, self.headPh ...
- Java之旅_高级教_集合框架
摘自:http://www.runoob.com/java/java-collections.html Java 集合框架 早在Java2之前,java 就提供了特设类.比如:Dictionary,V ...
- 【pyqtgraph绘图】案例-动态的正余弦波形图
先看一个简单的小例子: 完整代码: import numpy as np import pyqtgraph as pg import sys from PyQt5.QtWidgets import Q ...
- Scala笔记
定义包 package com.runoob { class HelloWorld } 引用包 import java.awt.Color // 引入Color import java.awt._ / ...