首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我如何在ethereumj中为同一个私钥创建不同的地址和公钥?

我如何在ethereumj中为同一个私钥创建不同的地址和公钥?
EN

Ethereum用户
提问于 2016-06-20 09:55:46
回答 1查看 611关注 0票数 1

如果我遵循如何在ethereumj中创建帐户中提到的步骤。

它每次使用不同的私钥/地址/公钥创建新帐户。每次我都想为相同的密码创建不同的地址/公钥。

EN

回答 1

Ethereum用户

发布于 2016-06-20 14:11:17

它每次都会创建新的账户,

代码语言:javascript
运行
复制
    ECKey key = new ECKey(); // it will take new  random entity 
//every time and it is the right way to create new accounts, in java

我认为您把私钥与password.There混淆了,这在Ethereumj实现中并不叫密码。

私钥必须像possible.And一样是随机的,因为人类不能很好/聪明地创建一个随机数来帮助生成一个公钥,并最终从它生成一个地址(这也需要是唯一的)。ECKey构造函数在内部使用SecureRandom()生成器创建一个随机文本,该文本将生成一个足够惟一的公钥(考虑到私钥的随机性,地址在数学上是有保证的)。

如果您来自geth背景,使用web3.个人对象生成帐户的方式,那么我看到了您混淆密码和私钥的意义。但是请注意,您生成的帐户与您提供的密码无关。密码只用于加密密钥库文件,其中包含私钥和其他information.And私钥--您的私钥仍然是随机的,您甚至不知道用于它的种子。

但是对于聪明人来说,您可以生成一个独特的文本,比如TimeStamp+myuniquepass+randomnumber,这可以使用以下way.But,如果我是您,我仍然会使用ECKey key =新的ECKey()创建/生成帐户的方式。

代码语言:javascript
运行
复制
>  ECKey key =
>         ECKey.fromPrivate(HashUtil.sha3(TimeStamp+myuniquepass+randomnumber .getBytes())); // not working code , but you get the point.
>         
>         
>         byte[] addr = key.getAddress();
>         byte[] priv = key.getPrivKeyBytes();
>           byte[] pb=      key.getPubKey();
> 
>         String addrBase16 = Hex.toHexString(addr);
>         String privBase16 = Hex.toHexString(priv);
票数 2
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/6322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档