I have a wallet file from 2011 back when I used to play around with Bitcoin.

I used an old version of Multibit which has since long been unavailable.

My wallet looks like this:

# Anyone who can read this file can spend your bitcoin.
# Format:
#   <Base58 encoded private key>[<whitespace>[<key createdAt>]]
#   The Base58 encoded private keys are the same format as
#   produced by the Satoshi client/ sipa dumpprivkey utility.
#   Key createdAt is in UTC format as specified by ISO 8601
#   e.g: 2011-12-31T16:42:00Z . The century, 'T' and 'Z' are mandatory
# End of private keys

I managed to get a version of Multibit HD from the web archive but this doesn't support this wallet.

I also tried using OpenSSL with the following command:

openssl enc -d -p -aes-256-cbc -md md5 -a -in C:\key\wallet.key.txt -out c:\key\wallet-decrypted.key.txt

This output a file which wasn't correct and gave a bad decrypt error. I know the password for this file.

Does anyone know the correct method of decrypting this?

UPDATE: While I'm at it, I found a whole bunch more .key files. This one has a different format:

org.bitcoin.productionm!œ;€ò=°´zXXXXXXXXXXXXXXXXXÌñ9,o( 2D

org.multibit.walletProtect.2 ZYour wallet description` 

3 Answers 3


Does anyone know the correct method of decrypting this?

It doesn't seem to be encrypted. The comments at the start of the file don't mention any form of encryption. It only mentions a common form of encoding - Base58. Encoding is not encryption so no decryption is needed.

# The Base58 encoded private keys are the same format as
# produced by the Satoshi client/ sipa dumpprivkey utility.

That Base58 key ought to be able to be imported into several different modern wallet programs.


Addendum 2024

it's not accepted when I copy and paste [...] Guessing wrong format

If we assume the binary private-key was encrypted and then converted to Base58, it should be possible to reverse that process.

According to some Multibit related source code

 * If you encrypt a string with this class you can decrypt it with the OpenSSL
 * command: openssl enc -d -aes-256-cbc -a -in cipher.txt -out plain.txt -pass
 * pass:aTestPassword
 * where: cipher.txt = file containing the cipher text plain.txt - where you
 * want the plaintext to be saved
 * substitute your password for "aTestPassword" or remove the "-pass" parameter
 * to be prompted.

So I would try that aes command on two versions of the private key data from the wallet file:

  • As is. Omitting comments, trailing blanks and date etc
  • Same but converted to binary from Base58 by using base58decode.

I'd convert the result to Base58 encoding before attempting import, depending on what the documentation of the import tools tell you about the format they expect. It might be necessary to convert to WIF for example.

However, I've no idea if that source code corresponds to the Multibit classic used and I havent read the rest of the code to find out how that code is used (if at all) when reading the wallet data file.

  • Unfortunately it's not accepted when I copy and paste the key directly into a private key import such as electrum. Guessing wrong format or too few characters for a private key.
    – HippoDuck
    Commented Apr 7 at 14:48
  • @HippoDuck: see addendum. Commented Apr 7 at 15:22

If the priv key starts with U2 and ends with = its most probably an md5 encryption.

Your password seems wrong, so you would need something like btcrecover that would jog through irerations.

You can find it on github here https://github.com/gurnec/btcrecover

Good luck /KX

  • I'm positive of the password though, long story but I remember the moment I set it up and the only password I used at the time etc. I will take a look at the GitHub repo. Thanks.
    – HippoDuck
    Commented May 15, 2023 at 16:11
  • Did you solve your problem? If you got the string from the first image and the string starts with 5 or L then you can download electeum light wallet and import the private key.
    – KeychainX
    Commented Apr 1 at 11:01
  • No, I was unable to get btcrecover to work. ModuleNotFoundError: No module named 'cPickle' Even on Python 2.7. Seems broken.
    – HippoDuck
    Commented Apr 7 at 14:27
  • Will have to shelve the idea for another year frustratingly. I know it was about £100/£150 back in 2011/2012. No idea what it would be now.
    – HippoDuck
    Commented Apr 7 at 15:23

In your case you have a few options:

  1. Using MultiBit Classic: Since MultiBitHD doesn't support Classic wallets, you might want to find a MultiBit Classic executable. Install it in a secure, offline environment to avoid any potential security risks. Open your wallet with the correct password and use the "Export" feature to extract your keys.
  2. Handling a .key File with plaintext: Your first .key file contains plaintext and the encrypted private key. You should remove everything except the encrypted private key (U2FsdG...snQhpZ6) and attempt to decrypt it again. If there are multiple keys, repeat this process for each one.
  3. Dealing with the Multibit Protobuf .key File: The second .key file you have uses the Multibit protobuf format. You can decrypt this using btcrecover with the following command:
python btcrecover.py --wallet ./btcrecover/test/test-wallets/multibit-wallet.key --correct-wallet-password [YOUR WALLET PASSWORD] --dump-privkeys multibit-wallet.key.privkeys.txt

After extracting the keys, you can import them into a different wallet like Electrum.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.