-1

所以我正在尝试从我已经知道的 64 个字符创建一个私钥/公钥,使用下面的代码使用 bitcoinjs:

key = Bitcoin.ECKey.makeRandom();

// Print your private key (in WIF format)
document.write(key.toWIF());
// => Kxr9tQED9H44gCmp6HAdmemAzU3n84H3dGkuWTKvE23JgHMW8gct

// Print your public key (toString defaults to a Bitcoin address)
document.write(key.pub.getAddress().toString());
// => 14bZ7YWde4KdRb5YN7GYkToz3EHVCvRxkF

如果我尝试将“key”设置为我的 64 个字符而不是“Bitcoin.ECKey.makeRandom();” 它失败。是否有我忽略的方法或库允许我使用已知的 64 个字符来生成 wif 格式的私钥和公共地址?提前感谢任何可以提供帮助的人。

4

2 回答 2

0

您应该使用 fromWIF 方​​法来传递您自己的数据。

来自 eckey.js 的源代码

// Static constructors
ECKey.fromWIF = function(string) {
  var payload = base58check.decode(string)
  var compressed = false

  // Ignore the version byte
  payload = payload.slice(1)

  if (payload.length === 33) {
    assert.strictEqual(payload[32], 0x01, 'Invalid compression flag')

    // Truncate the compression flag
    payload = payload.slice(0, -1)
    compressed = true
  }

要从您的密钥创建 WIF,请遵循https://en.bitcoin.it/wiki/Wallet_import_format 这是交互式工具http://gobittest.appspot.com/PrivateKey

于 2015-05-01T20:56:19.080 回答
0

生成私钥和公钥的解决方案:

//public-key
var address = eckey.getBitcoinAddress().toString();

var privateKeyBytesCompressed = privateKeyBytes.slice(0); 
privateKeyBytesCompressed.push(0x01);
var privateKeyWIFCompressed = new Bitcoin.Address(privateKeyBytesCompressed);
privateKeyWIFCompressed.version = 0x80;


//private-key
privateKeyWIFCompressed = privateKeyWIFCompressed.toString();

看看moneyart.info,了解设计精美的纸钱包。

于 2015-05-15T22:06:22.477 回答