[TLDR Guide] Bitcoin Private Key, Public Key, and Public Address

Kevin Choi
Chain Intelligence
2 min readNov 18, 2017

--

A public-key cryptography (or asymmetrical cryptography) is one that uses pairs of keys: 1. public key (open to anyone); and 2. private key (only known to the owner). In the case of Bitcoin which uses such cryptography, then what is the relationship between one’s private key, public key, and public address??

1. Private key

A private key is essentially a randomly generated, 32-byte number.

2. Public key

A public key can be derived from the private key using what’s called Elliptic Curve Cryptography. Bitcoin uses a specific elliptic curve called secp256k1 over the finite (prime) field of (2²⁵⁶-2³²-2⁹-2⁸-2⁷-2⁶-2⁴-1) number of elements, using the generator point (on the curve) G=(x, y) where (in hexademical):

x=79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798

y=483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8

Formula: public key = (private key) * G

Optional:

Elliptic curve: y² = x³+a x+b

secp256k1 curve: y² = x³+7

There exists a group law on the set of all points on a given elliptic curve. There’s even what’s called a point at infinity on the curve.

In the formula, note that the multiplication (a number times a point) is done via group law on the elliptic curve.

3. Public address

Public key → 8-step process involving concatenation, hash functions (SHA-256 and RIPEMD-160), and Base58Check → public address

Optional:

A hash function h() is one that can be used to map data of arbitrary size to data of fixed size. It satisfies two properties: 1. one-way given h(x)=y, it’s computationally infeasible to find z such that h(z)=y; and 2. collision-free it’s computationally infeasible to find x and y such that h(x)=h(y).

Note: private key → public key → public address is essentially a one-way street!

--

--