How to memorize a Bitcoin private key

This article explains how to memorize a Bitcoin address, and at the bottom briefly says that the method could be extended to private keys. This page will revisit that article and discuss a new variation.

Encoding numbers as words

The way people memorize long numbers is to encode the digits in words. There are two ways to do this: opportunistically and regularly. The opportunistic approach is to use variable-length encodings, including as many digits as possible in each word, using the Major system or some variation. The regular approach is to encode a fixed number of digits at a time, such as encoding digits in groups of three. The opportunistic approach may result in fewer words, but the regular approach is less error prone.

Base 1000 approach

In the earlier post I said you could encode a Bitcoin private key in a list of 26 words, each word encoding three digits. (Or in an average of 26 words if you use the opportunistic approach with an average of three digits per word.)

There is some risk confusing the order of the words, and so you could associate each word with a letter of the NATO phonetic alphabet. So instead of memorizing a sequence of 26 words, you memorize 26 pairs of associations. I used this process to memorize a 256-bit key in a few minutes, as I explain here.

Diceware approach

Diceware uses a list of 65 = 7776 words to encode dice rolls. You can generate memorable random passwords by rolling dice five at a time and looking up the corresponding word. We could use the same word list to memorize a Bitcoin private key by converting the key to a base 7776 number.

Now

256/log2(7776) = 19.8

and so you’d need either 19 or 20 Diceware words to encode a 256-bit number, such as a Bitcoin key. Another way to look at it is

777619 < 2256 < 777620

and so 20 words is always enough.

Pros and cons

The Diceware approach results in fewer words. To decode a list of Diceware words, you of course need the Diceware list. This list is readily available, so this is not a problem.

The base 1000 approach uses a few more words. It’s a lot of work, but it’s possible to memorize a list of 1000 pegs based on Major system mnemonics. It would also be possible to memorize the Diceware word list, but that would be even more work. Memorizing a list of 8x as many words is more than 8x as much effort; I’d estimate that it would be at least 20x as much work.

It’s not unheard of to memorize pegs for the numbers 1 through 1000. Many people have done it. And if you do go to the effort, the result is generally useful. You could, for example, memorize phone numbers or account numbers quickly. Converting a decimal number to base 1000 is trivial: group the digits in threes. Converting a number to base 7776 is not so easy.

More memory articles