Bitcoin Address Utility
Bitcoin Address Utility is an open-source program that allows a user to do various useful functions with Bitcoin addresses, such as convert them between various formats, encrypt and decrypt them, and print them as paper wallets. This program was started by Casascius and is available for downloading on GitHub at https://github.com/casascius/Bitcoin-Address-Utility. It is written in C# and is based on Microsoft’s .NET / Visual Studio toolchain.
Bitcoin Address Utility runs natively for Windows, and also runs on Linux and Mac OS X using Mono.
The binary can be downloaded from my website at https://casascius.com/btcaddress-alpha.zip (this file also includes the source code from which it was built).
Functions include:
- A calculator that lets you convert between private and public keys, hex and base58, bitcoin and altcoin addresses, etc.
- Bulk Bitcoin address generator;
- Paper wallet printer;
- Decrypter for encrypted private keys;
- Self-escrow utility;
- Intermediate code generator (used for creating encrypted paper wallets);
- Physical bitcoin insert printer (the small round private key paper found in Casascius Coins).
Contents
Address utility screen
The Address Utility screen offers the following functions:
- Create new Bitcoin addresses with corresponding minikey and standard private key formats
- Copy Bitcoin addresses and private keys to the clipboard as QR code images
- Convert minikeys to WIF/hexadecimal private key formats
- Create private keys from text strings via SHA-256 hash (“brainwallet”)
- Convert between hexadecimal and WIF private key formats
- Decrypt/encrypt private keys per BIP 0038
- Calculate public key from private key
- Calculate compressed/uncompressed equivalents for public keys
- Confirm that public keys are valid (i.e. that they represent a valid EC curve point)
- Calculate Hash160 from public key
- Calculate Bitcoin address
- Convert between equivalent addresses for Testnet/other altcoins.
- View balance on block explorers
Base58Check Calculator screen
The Base58Check calculator screen allows quick conversions between the Base58Check encoding commonly used in Bitcoin-related objects and the encoded hexadecimal equivalent. This screen is especially useful for discovering what hexadecimal prefix is required to create Base58Check strings with a specific prefix, or for seeing what is encoded in non-standard Base58 strings generated by service providers.
The 32-bit checksum is verified on all Base58 entries, and “invalid” is displayed in the hex box if the checksum is incorrect. However, verification of the checksum can be skipped simply by appending a question mark to the end of the Base58 string. Once the hexadecimal equivalent is known, simply making an insignificant change to the hex box (such as adding a space to the end) will result in the correct checksum being recomputed and displayed.
If “invalid” is still shown after adding a question mark to the Base58 string, it probably contains invalid characters such as 0, O, I, or l.
Key Combiner screen
The Key Combiner screen allows elliptic-curve arithmetic on Bitcoin public and private keys. Specifically, multiplication can be used for creating two-factor Bitcoin addresses, and addition can be used for secure vanity address generation.
The two boxes accept either a public or private key in any recognized format (hexadecimal, WIF, minikey, etc.).
Multiplying or adding two private keys yields a new private key, as well as its corresponding public key and Bitcoin address.
Multiplying or adding a private key and public key yields a combined public key and Bitcoin address, but no private key. When the public key input is replaced by the matching private key, then calculating the resulting private key becomes possible.