Private Key
  • Hash256
  • Hash160
  • Reverse Bytes

Private Key A randomly generated big number.

A private key is a random number. It is a 256 bit number.

It is used as the source of a public key.

Generate a Private Key

All you need to generate a private key is a reliable source of randomness.

An easy source of randomness on a Linux computer is /dev/urandom, which provides random bits of data from your computer. All you need to do is read from it:

# generate 256 bits of random data
urandom ="/dev/urandom")    # urandom is a "file"
bytes =               # read 32 bytes from it (256 bits)
privatekey = bytes.unpack("H*")[0]     # the data is binary, so unpack it to hexadecimal

# print the private key
puts privatekey

A private key can be almost any 256-bit number.

When you create a public key, your private key is put through a special mathematical function, and this function can only handle numbers up to just below 256 bits. The maximum value is:

max = 115792089237316195423570985008687907852837564279074904382605163141518161494337

So when you generate a 256 bit number, you will want to check that it's below this maximum value.


A hexadecimal private key is 32 bytes (64 characters):


If you're generating private keys for your own personal use, this is all you really need.

Wallet Import Format

However, you can convert your private key to a WIF Private Key, which basically makes it easier to copy.

By Greg Walker,

Last Updated: 24 May 2019
  • 24 May 2019: Added Hashover comment system (basic functionality to test it out)
  • 26 Nov 2018: Added sub titles to every page.
  • 11 Mar 2018: Private Key max value 115792089237316195423570985008687907852837564279074904382605163141518161494337
  • 11 Mar 2018: Glossary | Public Key
  • 24 May 2017: - separated wallet import format from in to its own page
  • 24 May 2017: - xlinks
  • 23 May 2017: - minor styling edit
  • 10 May 2017: - first draft
  • 09 May 2017: - first draft

Hey there, it's Greg.

I'll let you know about cool website updates, or if something seriously interesting happens in bitcoin.

Don't worry, it doesn't happen very often.