[英]Retrive Public key from a Bitcoin Private Key
How i can get Bitcoin Address from a Bitcoin Private Key . 我如何从比特币私钥获得比特币地址。
I understand the whole method except the first one where , the public key and its x and y cord comes from the hash/private key . 我理解整个方法,除了第一个方法,公钥及其x和y线来自哈希/私钥。
If i can get a code example in php it would be more helpful for me . 如果我可以在php中获得代码示例,那对我来说会更有帮助。
Well for starters use the following library: 初学者使用以下库:
https://github.com/RobKohr/PHP-Bitcoin-Address-Creator https://github.com/RobKohr/PHP-Bitcoin-Address-Creator
optionally you could use a backend of vanitygen and generate addresses via exec()
, shell_exec()
, or even better escapeshellarg()
. 你可以选择使用vanitygen的后端并通过
exec()
, shell_exec()
甚至更好的escapeshellarg()
生成地址。 other than these two methods, your options would be to setup an rpc with a bitcoind server. 除了这两种方法之外,您的选择是使用bitcoind服务器设置rpc。
of course there are more complex solutions, such as what is located here(coinbit.tk, a splitkey vanity address generator that generates the private key in javascript) 当然还有更复杂的解决方案,例如这里的内容(coinbit.tk,一个在javascript中生成私钥的splitkey虚荣地址生成器)
https://github.com/RobKohr/PHP-Bitcoin-Address-Creator https://github.com/RobKohr/PHP-Bitcoin-Address-Creator
if you still have trouble, see the following topic(s). 如果仍有问题,请参阅以下主题。
https://bitcoin.stackexchange.com/questions/2289/php-script-to-create-private-key-public-address https://bitcoin.stackexchange.com/questions/2289/php-script-to-create-private-key-public-address
https://bitcointalk.org/index.php?topic=81626.0 https://bitcointalk.org/index.php?topic=81626.0
Here's a NodeJS script to go from WIF -> Private Key -> Public Key -> Binary Address -> Human Readable Address 这是一个NodeJS脚本来自WIF - >私钥 - >公钥 - >二进制地址 - >人类可读地址
// EXAMPLE: node wif_details.js 5JuHN27YsJktraQYGgLeihxZ2bwQbFANFdpc8gtDgqyyJsZJQB6
const ecc = require('eosjs-ecc');
const base58 = require('bs58');
const ripemd160 = require('ripemd160')
const wif = process.argv[2];
console.log("WIF: ", wif);
const privkey = ecc.PrivateKey.fromString(wif);
console.log("Private Key: ", privkey.toBuffer().toString('hex'));
const compressed_pubkey = privkey.toPublic();
const uncompressed_pubkey = compressed_pubkey.toUncompressed();
console.log("Public key (compressed): ", compressed_pubkey.toHex());
console.log("Public key: ", uncompressed_pubkey.toHex());
const hash1 = ecc.sha256(compressed_pubkey.toBuffer());
const hash2 = new ripemd160().update(Buffer.from(hash1, 'hex')).digest('hex');
const hash3 = ecc.sha256(uncompressed_pubkey.toBuffer());
const hash4 = new ripemd160().update(Buffer.from(hash3, 'hex')).digest('hex');
const with_prefix_compressed = '00' + hash2;
const with_prefix_uncompressed = '00' + hash4;
const hash5 = ecc.sha256(Buffer.from(with_prefix_compressed, 'hex'));
const hash6 = ecc.sha256(Buffer.from(hash5, 'hex'));
const hash7 = ecc.sha256(Buffer.from(with_prefix_uncompressed, 'hex'));
const hash8 = ecc.sha256(Buffer.from(hash7, 'hex'));
const binary_address_compressed = with_prefix_compressed + hash6.slice(0,8);
const binary_address_uncompressed = with_prefix_uncompressed + hash8.slice(0,8);
console.log("Binary address (compressed): ", binary_address_compressed);
console.log("Binary address: ", binary_address_uncompressed);
const bitcoin_address_compressed = base58.encode(Buffer.from(binary_address_compressed, 'hex'));
const bitcoin_address_uncompressed = base58.encode(Buffer.from(binary_address_uncompressed, 'hex'));
console.log("Bitcoin address (compressed): ", bitcoin_address_compressed);
console.log("Bitcoin address: ", bitcoin_address_uncompressed);
This is not really what you are looking for, since you start from a specific private key. 这不是你想要的,因为你从一个特定的私钥开始。 But if you just want to generate a private and public key, you might want to look into vanitygen, which generates both.
但是,如果您只想生成私钥和公钥,您可能需要查看vanitygen,它会生成两者。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.