# Difference between revisions of "Bitcoin Address Utility"

(→Address utility screen) |
|||

Line 6: | Line 6: | ||

* Create new Bitcoin addresses with corresponding [[minikey]] and standard private key formats | * Create new Bitcoin addresses with corresponding [[minikey]] and standard private key formats | ||

− | * Convert minikeys to | + | * 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 | * Convert between hexadecimal and WIF private key formats | ||

* Decrypt/encrypt private keys per [[BIP 0038]] | * Decrypt/encrypt private keys per [[BIP 0038]] | ||

* Calculate public key from private key | * Calculate public key from private key | ||

* Calculate compressed/uncompressed equivalents for public keys | * 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 Hash160 from public key | ||

* Calculate Bitcoin address | * Calculate Bitcoin address |

## Revision as of 21:31, 25 November 2012

**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 https://github.com/casascius/Bitcoin-Address-Utility. It is written in C# and is based on Microsoft's .NET / Visual Studio toolchain.

## Address utility screen

The Address Utility screen offers the following functions:

- Create new Bitcoin addresses with corresponding minikey and standard private key formats
- 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.

## 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.