Bitcoin Address Utility

From Bitcoin Wiki
Revision as of 19:13, 25 November 2012 by Casascius (talk | contribs)
Jump to: navigation, search

Bitcoin Address Utility is an open-source program for Windows 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.

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
  • Convert minikeys to standard private key formats
  • 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
  • Calculate Hash160 from public key
  • Calculate Bitcoin address
  • Convert between equivalent addresses for Testnet/Namecoin/Litecoin/other altcoins.

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.