CoinSalad


Bitcoin Market Charts, Data & Tools

Bitcoin Price: $2,379.23 (-113.53
Market Cap: $39,052,086,413
Node Count: 7,650

Tutorial: Generate Bitcoin private and public keys


This tool is intended for use as a tutorial to demonstrate how Bitcoin addresses are generated. It is not intended for you to create addresses to use for storing or spending bitcoins; use at your own discretion. The key generation process used in this tutorial is forked from RoyalForkBlog. The Bitcoin public key is base58 encoded to turn it into a Bitcoin address.

Section 1: Generate Private key

Step 1.1: Enter a passphrase.
Passphrase:
Step 1.2: Generate private key from passphrase using SHA256 algorithm.
This is reversible back to the passphrase.
SHA256 Private Key of Passphrase: (k)
ed3cb1d12f510dd4600410613f71071652639b0722eab550ab51befce0bcbd76


Section 2: Encode Private Key

Step 2.1: Prepend the SHA256 private key with the version number , "
80
".
Step 2.2: Append the SHA256 private key with the compression flag, "
01
".
Step 2.3: Calculate and append the SHA256 private key with its checksum at the end, "
602653DA
".
Structured Private Key:
80
ed3cb1d12f510dd4600410613f71071652639b0722eab550ab51befce0bcbd76
01
602653DA
Step 2.4: Encode this structured private key with Base58 for easier readability.
This is reversible back to the structured private key.
This is the final private key.
Base58 Encoded Structured Private Key:
L5AsLq5T7WEkxs2oALFCidHgkuRZB8NhabnfeiC7gPPo4L1QmTCd


Section 3: Plot the Private Key

Step 3.1 Multiply the SHA256 private key of Passphrase (k) by the eliptic curve generator point.
kpub =
ed3cb1d12f510dd4600410613f71071652639b0722eab550ab51befce0bcbd76
*
Step 3.2 Where the private key is charted on the eliptic curve, this has an x and y coordinate.
x =
f5c33e2cdf69bbf27bb89e1c050fb645d4b06b87a06958842fd30a7cfa86294c
y =
c7878ee08f69313713f1778a5936b2426e9e11f27bf859cf1d87d40cf3a821cf


Section 4: Generate the Public Key

Step 4.1 Get the parity of the y coordinate.
(An even parity is 02 and an odd parity is 03)
y:
c7878ee08f69313713f1778a5936b2426e9e11f27bf859cf1d87d40cf3a821cf
is ODD.
ODD. Parity of y:
03
Step 4.2 Prepend the parity of y to the x coordinate for the full public key representation.
Full Public Key Representation:
03 f5c33e2cdf69bbf27bb89e1c050fb645d4b06b87a06958842fd30a7cfa86294c
Step 4.3 Apply SHA256 to the full public key representation.
Step 4.4 Then apply RIPEMD160 to the output of step 4.3 to create the hashed public key.
Hashed Public Key:
1aadd6e3649dba3532ce20f274a905bf96935676


Section 5: Encode the Public Key

Step 5.1 Prepend the hashed public key with the version number, 00.
(Different to the version number in step 2.1)
Step 5.2 Calculate and append the hashed public key with its checksum at the end, 602653DA.
(Same as step 2.3)
Structured Public Key:
00 1aadd6e3649dba3532ce20f274a905bf96935676 602653DA
Step 5.3 Encode this hashed public key with Base58 for easier readability.
This is reversible back to the structured public key.
This is the final public key.
Base58 Encoded Hashed Public Key:
13S4pZZQdVBYeyKiXb2nozc7rWZSccQAjT


CoinSalad.com is a web service dedicated to providing Bitcoin market stats and charting data on some key components of the Bitcoin network, such as Bitcoin exchanges and Bitcoin nodes. CoinSalad monitors all the major USD-currency based exchanges on the market providing near real-time market data. Listed exchanges have shown to have steady and decent volume. Learn more about CoinSalad or feel free to send us an email. Follow us on Twitter @CoinSalad.

CoinSalad.com 2017 ❤ Developer Bitcoin donation address: 12nfK3GZXoBE9eJNB8WbMrvJEFRCK8FX7d