I wrote my implementation in Python. Here is the resulting code:
#!/usr/bin/env python ''' Creates BitCoin Wallet complaint credentials: - Public Key - Private Key - Private Key (Wallet Import Format) ''' import hashlib import base58 import ecdsa from ecdsa.keys import SigningKey from utilitybelt import dev_random_entropy from binascii import hexlify, unhexlify def random_secret_exponent(curve_order): while True: random_hex = hexlify(dev_random_entropy(32)) random_int = int(random_hex, 16) if random_int >= 1 and random_int < curve_order: return random_int def generate_private_key(): curve = ecdsa.curves.SECP256k1 se = random_secret_exponent(curve.order) from_secret_exponent = ecdsa.keys.SigningKey.from_secret_exponent return hexlify(from_secret_exponent(se, curve, hashlib.sha256).to_string()) def generate_public_key(private_key_hex): hash160 = ripe_hash(private_key_hex) public_key_and_version_hex = b"04" + hash160 checksum = double_hash(public_key_and_version_hex)[:4] return base58.b58encode(public_key_and_version_hex + checksum) def ripe_hash(key): ret = hashlib.new('ripemd160') ret.update(hashlib.sha256(key).digest()) return ret.digest() def double_hash(key): return hashlib.sha256(hashlib.sha256(key).digest()).digest() def generate_private_key_wif(private_key_hex): private_key_and_version = b"80" + private_key_hex checksum = double_hash(private_key_and_version)[:8] hashed = private_key_and_version + checksum return base58.b58encode(private_key_and_version + checksum) def main(): private_key_hex = generate_private_key() public_key_hex = generate_public_key(private_key_hex) private_key_wif_hex = generate_private_key_wif(private_key_hex) print("Private Key: " + private_key_hex) print("Public Key: " + public_key_hex) print("Private Key (WIF Format): " + private_key_wif_hex) if __name__ == '__main__': main()
How to run:
Private Key: 0069ea570c33f0c1b3eadb96ed6420205dbd8e77984b74aa98f9596b96f87a1c Public Key: 2UcVT9Yb22qYP2Q5BBoEXRcD3sYdw3k7wqQh Private Key (WIF Format): HA7VkpDktQSEKBXVetYkaj67hzvoB5c5XogVTHK9TNNs6nVoLVomJMCzYYdFtgf39f9Ai3owWtbo5N2oB24BrmCaQ5Zuixk1vXcvk
I have my concerns about the correctness of the generated keys, as well as for the private key in WIF format. In theory it should be a short string.
✓ Extra quality
ExtraProxies brings the best proxy quality for you with our private and reliable proxies
✓ Extra anonymity
Top level of anonymity and 100% safe proxies – this is what you get with every proxy package
✓ Extra speed
1,ooo mb/s proxy servers speed – we are way better than others – just enjoy our proxies!
USA proxy location
We offer premium quality USA private proxies – the most essential proxies you can ever want from USA
Our proxies have TOP level of anonymity + Elite quality, so you are always safe and secure with your proxies
Use your proxies as much as you want – we have no limits for data transfer and bandwidth, unlimited usage!
Superb fast proxy servers with 1,000 mb/s speed – sit back and enjoy your lightning fast private proxies!
99,9% servers uptime
Alive and working proxies all the time – we are taking care of our servers so you can use them without any problems
No usage restrictions
You have freedom to use your proxies with every software, browser or website you want without restrictions
Perfect for SEO
We are 100% friendly with all SEO tasks as well as internet marketing – feel the power with our proxies
Buy more proxies and get better price – we offer various proxy packages with great deals and discounts
We are working 24/7 to bring the best proxy experience for you – we are glad to help and assist you!