Bitcoin Address Utility

From Bitcoin Wiki
Revision as of 18:49, 5 December 2012 by Casascius (talk | contribs) (everyone says it works on linux and mac with mono so...)
Jump to: navigation, search

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 on GitHub at 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 using Mono.

Address utility screen

Address screen. Clicking the arrows performs conversions in the direction of the arrow.

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 SHA256 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/Namecoin/Litecoin/other altcoins.
  • View balance on block explorers

Base58Check Calculator screen

Casascius Base58 Calc screen.png

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

Casascius key combiner screen.png

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.