Is it possible to generate address and private key pair completely offline, using only dice / other random number generators, calculators, paper and pen? If yes, whats the procedure and formulas used?
-
Is there a reason for asking this question?– o0'.Feb 7, 2013 at 16:27
-
1Just to be extra careful.. may be its more of a trouble than what its worth. I will choose an offline desktop. :)– vi.su.Feb 7, 2013 at 16:56
-
Like this one? furniturebydovetail.com/wp-content/uploads/2012/08/…– o0'.Feb 7, 2013 at 18:21
-
No, that's just a desk.. :)– vi.su.Feb 8, 2013 at 4:51
-
1Actually, that's a wise question to ask, even offline hardwares may have a pre-defined pattern for generating random numbers. So no complete privacy is guaranteed by using hardware systems.– Orhun Alp OralDec 13, 2017 at 23:07
4 Answers
Yes, it is possible to create such keypairs offline, but the calculations are long and complex. You would need to find out how to:
1) Create a secp256k1 public key from a private key
2) Perform SHA-256 hashing
3) Perform RIPEMD-160 hashing
4) Be able to convert the final value into Base 58
Generally, the calculations would be very tedious; this is what we have computers for.
-
2
-
4Also, if you made any mistakes, you'd be sending your coins into the void. Feb 7, 2013 at 16:05
A good article on keypair generation http://www.swansontec.com/bitcoin-dice.html
Essentially, you can generate your private key using dice, and use a computer to derive an address from that private key.
-
The article seems very relevant, however it would be better if you added a short summary of the contents and not only left the link.– Murch ♦Nov 10, 2015 at 9:13
Here are instructions to create a Bitcoin address and associated key-pair completely offline. It is straight from the Bitcoin Wiki.
https://en.bitcoin.it/wiki/How_to_set_up_a_secure_offline_savings_wallet
This working computer example complements @ThePiachu.
Let's assume your random number generator mechanism generated this very low entropy 256-bit number in hexadecimal format that will become the private key:
0000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff
1. Associated compressed Bitcoin WIF-encoded private key:
% echo "0000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff" | sed 's/$/01/' | bx base58check-encode -v 128
KwDiDMtpksBAcfyHsVS5XzmirtyjKWSeaeM9U1QppugixMUeKMqp
2. Associated compressed Bitcoin public address:
% echo "0000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff" | bx ec-to-public | bx ec-to-address -v 0
1PbStXjfDNBU6FZA2iSeisVWwCFN9GK1eQ