https://github.com/talonlab/python-bip38
A Python library for implementation of Bitcoin Improvement Proposal - 0038 / BIP38 protocol.
https://github.com/talonlab/python-bip38
bip38 bitcoin btc passphrase python wif
Last synced: about 2 months ago
JSON representation
A Python library for implementation of Bitcoin Improvement Proposal - 0038 / BIP38 protocol.
- Host: GitHub
- URL: https://github.com/talonlab/python-bip38
- Owner: talonlab
- License: mit
- Created: 2023-09-06T13:40:52.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2024-12-01T12:28:25.000Z (6 months ago)
- Last Synced: 2025-04-20T11:23:10.315Z (about 2 months ago)
- Topics: bip38, bitcoin, btc, passphrase, python, wif
- Language: Python
- Homepage: https://bip38.readthedocs.io
- Size: 1.28 MB
- Stars: 16
- Watchers: 2
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Bitcoin Improvement Proposal - 0038 / BIP38
[](https://github.com/talonlab/python-bip38/actions/workflows/build.yml)
[](https://pypi.org/project/bip38)
[](https://bip38.readthedocs.io)
[](https://pypi.org/project/bip38)
[](https://pypi.org/project/bip38)
[](https://coveralls.io/github/talonlab/python-bip38)A Python library for the implementation of Bitcoin Improvement Proposal - 0038 / (BIP38) protocol.
This library supports both [No EC-multiply](https://github.com/bitcoin/bips/blob/master/bip-0038.mediawiki#encryption-when-ec-multiply-flag-is-not-used) and [EC-multiply](https://github.com/bitcoin/bips/blob/master/bip-0038.mediawiki#encryption-when-ec-multiply-mode-is-used) modes and is compatible with over 150+ cryptocurrencies.
It's specifically tailored for Pay-to-PubKey-Hash (P2PKH) address types.For more info see the [Passphrase-protected private key - BIP38](https://en.bitcoin.it/wiki/BIP_0038) spec.
## Installation
The easiest way to install `bip38` is via pip:
```
pip install bip38
```If you want to run the latest version of the code, you can install from the git:
```
pip install git+ssh://github.com/talonlab/python-bip38.git
```## Quick Usage
##### no EC multiply:
```python
#!/usr/bin/env python3from typing import List
import json
from bip38 import BIP38
from bip38.cryptocurrencies import Bitcoin as Cryptocurrency
from bip38.wif import private_key_to_wif# Private key
PRIVATE_KEY: str = "cbf4b9f70470856bb4f40f80b87edb90865997ffee6df315ab166d713af433a5"
# Passphrase / password
PASSPHRASE: str = "bip38" # u"\u03D2\u0301\u0000\U00010400\U0001F4A9"
# Network type
NETWORK:str = "mainnet"
# To show detail
DETAIL: bool = True
# Initialize BIP38 instance
bip38: BIP38 = BIP38(
cryptocurrency=Cryptocurrency, network=NETWORK
)
# Wallet Import Format's
WIFs: List[str] = [
private_key_to_wif(
private_key=PRIVATE_KEY, cryptocurrency=Cryptocurrency, network=NETWORK, wif_type="wif"
), # No compression
private_key_to_wif(
private_key=PRIVATE_KEY, cryptocurrency=Cryptocurrency, network=NETWORK, wif_type="wif-compressed"
) # Compression
]for WIF in WIFs:
print("WIF:", WIF)encrypted_wif: str = bip38.encrypt(
wif=WIF, passphrase=PASSPHRASE
)
print("BIP38 Encrypted WIF:", encrypted_wif)
print("BIP38 Decrypted:", json.dumps(bip38.decrypt(
encrypted_wif=encrypted_wif, passphrase=PASSPHRASE, detail=DETAIL
), indent=4))print("-" * 125)
```Output
```shell
WIF: 5KN7MzqK5wt2TP1fQCYyHBtDrXdJuXbUzm4A9rKAteGu3Qi5CVR
BIP38 Encrypted WIF: 6PRVWUbm1BX3fNUTgZoCYj9VLAQzxB9daqVfr4TgbhxegTKoSz9jRDks9a
BIP38 Decrypted: {
"wif": "5KN7MzqK5wt2TP1fQCYyHBtDrXdJuXbUzm4A9rKAteGu3Qi5CVR",
"private_key": "cbf4b9f70470856bb4f40f80b87edb90865997ffee6df315ab166d713af433a5",
"wif_type": "wif",
"public_key": "04d2ce831dd06e5c1f5b1121ef34c2af4bcb01b126e309234adbc3561b60c9360ea7f23327b49ba7f10d17fad15f068b8807dbbc9e4ace5d4a0b40264eefaf31a4",
"public_key_type": "uncompressed",
"seed": null,
"address": "1Jq6MksXQVWzrznvZzxkV6oY57oWXD9TXB",
"lot": null,
"sequence": null
}
-----------------------------------------------------------------------------------------------------------------------------
WIF: L44B5gGEpqEDRS9vVPz7QT35jcBG2r3CZwSwQ4fCewXAhAhqGVpP
BIP38 Encrypted WIF: 6PYNKZ1EBitZbP8ctdXG5xkpsFAtgd7c9JQdLCXqbhBRbANSnuUK6PgQdV
BIP38 Decrypted: {
"wif": "L44B5gGEpqEDRS9vVPz7QT35jcBG2r3CZwSwQ4fCewXAhAhqGVpP",
"private_key": "cbf4b9f70470856bb4f40f80b87edb90865997ffee6df315ab166d713af433a5",
"wif_type": "wif-compressed",
"public_key": "02d2ce831dd06e5c1f5b1121ef34c2af4bcb01b126e309234adbc3561b60c9360e",
"public_key_type": "compressed",
"seed": null,
"address": "164MQi977u9GUteHr4EPH27VkkdxmfCvGW",
"lot": null,
"sequence": null
}
-----------------------------------------------------------------------------------------------------------------------------
```##### EC multiply:
```python
#!/usr/bin/env python3from typing import List
import json
import osfrom bip38 import BIP38
from bip38.cryptocurrencies import Bitcoin as Cryptocurrency# Passphrase / password
PASSPHRASE: str = "bip38" # u"\u03D2\u0301\u0000\U00010400\U0001F4A9"
# Network type
NETWORK: str = "mainnet"
# To show detail
DETAIL: bool = True
# Initialize BIP38 instance
bip38: BIP38 = BIP38(
cryptocurrency=Cryptocurrency, network=NETWORK
)
# List of owner salt, seed, public key type, lot, and sequence kwargs
KWARGS: List[dict] = [
# Random owner salt & seed, No compression, No lot & sequence
{"owner_salt": os.urandom(8), "seed": os.urandom(24), "wif_type": "wif", "lot": None, "sequence": None},
# Random owner salt & seed, No compression, With lot & sequence
{"owner_salt": os.urandom(8), "seed": os.urandom(24), "wif_type": "wif", "lot": 863741, "sequence": 1},
# Random owner salt & seed, Compression, No lot & sequence
{"owner_salt": os.urandom(8), "seed": os.urandom(24), "wif_type": "wif-compressed", "lot": None, "sequence": None},
# Random owner salt & seed, Compression, With lot & sequence
{"owner_salt": os.urandom(8), "seed": os.urandom(24), "wif_type": "wif-compressed", "lot": 863741, "sequence": 1},
# With owner salt & seed, No compression, No lot & sequence
{"owner_salt": "75ed1cdeb254cb38", "seed": "99241d58245c883896f80843d2846672d7312e6195ca1a6c", "wif_type": "wif", "lot": None, "sequence": None},
# With owner salt & seed, No compression, With lot & sequence
{"owner_salt": "75ed1cdeb254cb38", "seed": "99241d58245c883896f80843d2846672d7312e6195ca1a6c", "wif_type": "wif", "lot": 567885, "sequence": 1},
# With owner salt & seed, Compression, No lot & sequence
{"owner_salt": "75ed1cdeb254cb38", "seed": "99241d58245c883896f80843d2846672d7312e6195ca1a6c", "wif_type": "wif-compressed", "lot": None, "sequence": None},
# With owner salt & seed, Compression, With lot & sequence
{"owner_salt": "75ed1cdeb254cb38", "seed": "99241d58245c883896f80843d2846672d7312e6195ca1a6c", "wif_type": "wif-compressed", "lot": 369861, "sequence": 1},
]for kwarg in KWARGS:
intermediate_passphrase: str = bip38.intermediate_code(
passphrase=PASSPHRASE, owner_salt=kwarg["owner_salt"], lot=kwarg["lot"], sequence=kwarg["sequence"]
)
print("Intermediate Passphrase:", intermediate_passphrase)encrypted_wif: dict = bip38.create_new_encrypted_wif(
intermediate_passphrase=intermediate_passphrase, wif_type=kwarg["wif_type"], seed=kwarg["seed"],
)
print("Encrypted WIF:", json.dumps(encrypted_wif, indent=4))print("Confirm Code:", json.dumps(bip38.confirm_code(
passphrase=PASSPHRASE, confirmation_code=encrypted_wif["confirmation_code"], detail=DETAIL
), indent=4))print("BIP38 Decrypted:", json.dumps(bip38.decrypt(
encrypted_wif=encrypted_wif["encrypted_wif"], passphrase=PASSPHRASE, detail=DETAIL
), indent=4))print("-" * 125)
```Output
```shell
Intermediate Passphrase: passphrasemG6Ae7PYWEuso54V4dMKFK7mpFPz4t1T1BhywtvNVt7E4xDM8Vq8xo68K1DdW9
Encrypted WIF: {
"encrypted_wif": "6PfQma2dv1Hov8kSobbZapHKA69g96oGWA8rwfcDP4ZKs4ncqPeJP23qnL",
"confirmation_code": "cfrm38V5Txsng8kFerZPprMH9LjHnDTv22JzroUqHwZN1B9xxoB6PU3UtC5o12wZspe21Uec33W",
"public_key": "049a25850934fd16bc108046a60794a18cf27ec32f1ad5de75d6571aecc889ff7f30135195c69931115a9f2bf4262ee1dba707021dacd4e0bf68da195f60727643",
"seed": "d937267be638947d6dc7971f9781ce61076847b490b2dd06",
"public_key_type": "uncompressed",
"address": "1QAWVYDpESZ2afxFnbWS5G64EQfzo2imNR"
}
Confirm Code: {
"public_key": "049a25850934fd16bc108046a60794a18cf27ec32f1ad5de75d6571aecc889ff7f30135195c69931115a9f2bf4262ee1dba707021dacd4e0bf68da195f60727643",
"public_key_type": "uncompressed",
"address": "1QAWVYDpESZ2afxFnbWS5G64EQfzo2imNR",
"lot": null,
"sequence": null
}
BIP38 Decrypted: {
"wif": "5KXXTS7ULYo1kxgirDgRfzviTEocKGLtTV9SUHHbRb7z2AEVYVB",
"private_key": "e155b57cb4d94ef4d2b5c32879ffaad851da0b20a10deb392c31404cc29637a4",
"wif_type": "wif",
"public_key": "049a25850934fd16bc108046a60794a18cf27ec32f1ad5de75d6571aecc889ff7f30135195c69931115a9f2bf4262ee1dba707021dacd4e0bf68da195f60727643",
"public_key_type": "uncompressed",
"seed": "d937267be638947d6dc7971f9781ce61076847b490b2dd06",
"address": "1QAWVYDpESZ2afxFnbWS5G64EQfzo2imNR",
"lot": null,
"sequence": null
}
-----------------------------------------------------------------------------------------------------------------------------
Intermediate Passphrase: passphraseeX6YjBj1AXhiw28iQfnn1d5N6Lsf3crrsmxQMaHco4Kpzoymah46hP5bbQqRva
Encrypted WIF: {
"encrypted_wif": "6PgRJMfKzjt6puxjobszrdtDa4KeRT5dRNwSaqj8BtQAvsUJLz7XifLqxf",
"confirmation_code": "cfrm38V8kgweU6FKDGY1pMtucLfBTp5bD3QMd64GmRJtVR8ifZaynoLDW8kHY9rACq3Xvrdpe2R",
"public_key": "040bf1d82b01b2691aaf143991dbaf3cea58cafd74b4377536a1f4da684151151c44118b137652df3bc328c7bb07b9aefa94a6194e8a1b9034265100df99740819",
"seed": "73123c97834cc52fe937e29d33b86a12085a241e347dffc5",
"public_key_type": "uncompressed",
"address": "1Pd8Scd8KfhzLSzyLgMgLKc58tk9f3dnD5"
}
Confirm Code: {
"public_key": "040bf1d82b01b2691aaf143991dbaf3cea58cafd74b4377536a1f4da684151151c44118b137652df3bc328c7bb07b9aefa94a6194e8a1b9034265100df99740819",
"public_key_type": "uncompressed",
"address": "1Pd8Scd8KfhzLSzyLgMgLKc58tk9f3dnD5",
"lot": 863741,
"sequence": 1
}
BIP38 Decrypted: {
"wif": "5J3W72BqJ7YFEkJR8KuGmHRXdr8AJUnKT1oKp6hQAtx8bKVgmqU",
"private_key": "1e0223706880eebc96470b0629262e31a828992e0f531c6e4793cfee9d30a694",
"wif_type": "wif",
"public_key": "040bf1d82b01b2691aaf143991dbaf3cea58cafd74b4377536a1f4da684151151c44118b137652df3bc328c7bb07b9aefa94a6194e8a1b9034265100df99740819",
"public_key_type": "uncompressed",
"seed": "73123c97834cc52fe937e29d33b86a12085a241e347dffc5",
"address": "1Pd8Scd8KfhzLSzyLgMgLKc58tk9f3dnD5",
"lot": 863741,
"sequence": 1
}
-----------------------------------------------------------------------------------------------------------------------------
Intermediate Passphrase: passphraseoCyP3atnoAxv9o8Nhfi7S6fsucu46s9wpDxS4cBGeVPhNQxSBrps3yR4P4Z7Mk
Encrypted WIF: {
"encrypted_wif": "6PnR1W6XPrx6RK4mgGCjwx3c24zs6peuyBiiKoYfwGpWoJw8A9HeiGz1wf",
"confirmation_code": "cfrm38VUHiVy4jMqxJHqQdsuaLkMN3LxdseumiHcQQMCnnYaRtkZ5oQEtfWdhnbGCjV1hXU7zqc",
"public_key": "02b12e27280a74e55d979d23eb2dc4c107028236512bdbdbed3ba0d3c139500522",
"seed": "ab0ed77af04c331801afcf61a27c787e7e27de179230d41e",
"public_key_type": "compressed",
"address": "17vbPdAUMftcA5qHXTVS6KiAWh3psHq8Kn"
}
Confirm Code: {
"public_key": "02b12e27280a74e55d979d23eb2dc4c107028236512bdbdbed3ba0d3c139500522",
"public_key_type": "compressed",
"address": "17vbPdAUMftcA5qHXTVS6KiAWh3psHq8Kn",
"lot": null,
"sequence": null
}
BIP38 Decrypted: {
"wif": "L4bxdGanNrHTkDHzQWAwn7y8KhVzAsuuXUzqK8Ah6822MbTy9HMt",
"private_key": "dc4eb85c52ad9d82152a0ecd9542202a164556eb1f444a59da5936269527278e",
"wif_type": "wif-compressed",
"public_key": "02b12e27280a74e55d979d23eb2dc4c107028236512bdbdbed3ba0d3c139500522",
"public_key_type": "compressed",
"seed": "ab0ed77af04c331801afcf61a27c787e7e27de179230d41e",
"address": "17vbPdAUMftcA5qHXTVS6KiAWh3psHq8Kn",
"lot": null,
"sequence": null
}
-----------------------------------------------------------------------------------------------------------------------------
Intermediate Passphrase: passphrasedCiMgYvgiaHcR6kGF5SLANuCte7ggrupYpsLbe9kNtmqx4XQF2LGBiPZSbwGWk
Encrypted WIF: {
"encrypted_wif": "6PoNSsfzTSpKZreygc8DVCMTjFXVwMNw6ddpXSCkgYYWw3uHNXs2BRkx8M",
"confirmation_code": "cfrm38VXQMwDqnPHg3NB2G35qxgadVCfoC5SjntbhaBxAe5VX9sasVHqQHKV44XLLpJqy2z4iu6",
"public_key": "033c0c467652bb0f8227c014551af8cc3cd4c4f0984f712ddc94dc49723370b8e7",
"seed": "bad4ce4f6e1a6aa226cd89602d92c636d4ab23891808cc6e",
"public_key_type": "compressed",
"address": "1JkLXpEAwGBcViwwVDXfiURfd4dg8A4Qos"
}
Confirm Code: {
"public_key": "033c0c467652bb0f8227c014551af8cc3cd4c4f0984f712ddc94dc49723370b8e7",
"public_key_type": "compressed",
"address": "1JkLXpEAwGBcViwwVDXfiURfd4dg8A4Qos",
"lot": 863741,
"sequence": 1
}
BIP38 Decrypted: {
"wif": "L4KTQ9h5uUWy6r4tXC1wDCfGJbB31nX4Wmfz6FKHAjGxncnBLoh4",
"private_key": "d3d13893951d6256e5633f6a003936214c4b0e9f1211682af1df858464d9ea52",
"wif_type": "wif-compressed",
"public_key": "033c0c467652bb0f8227c014551af8cc3cd4c4f0984f712ddc94dc49723370b8e7",
"public_key_type": "compressed",
"seed": "bad4ce4f6e1a6aa226cd89602d92c636d4ab23891808cc6e",
"address": "1JkLXpEAwGBcViwwVDXfiURfd4dg8A4Qos",
"lot": 863741,
"sequence": 1
}
-----------------------------------------------------------------------------------------------------------------------------
Intermediate Passphrase: passphraseondJwvQGEWFNrMBiUhdVNwLNdPDHBRrVZkVuH3dVubC4JcuxLnKWFep8uGwhth
Encrypted WIF: {
"encrypted_wif": "6PfXN4Up17PgFdoxEBVwAxRuaQ1UderDKQ2q6nGCrhLVPD7GS3awBfKtox",
"confirmation_code": "cfrm38V5qTEpyzqDDgry1mEmRPEn4xaXC74tKbH9jfSpHkfiud3SW9dRSmhZHuTwvW78eVUWwjx",
"public_key": "04bc2b0adc1106e45fa86a3507cbec5bc834c33780c7ae774b885ac50c8489fc481ae5198457e5733e3f91e2b68df10ba55fa0408a918e4f37e475591cfa41d31d",
"seed": "99241d58245c883896f80843d2846672d7312e6195ca1a6c",
"public_key_type": "uncompressed",
"address": "12NzK7AbrtY5evVfDb7nnM5DNtbjGKBB6g"
}
Confirm Code: {
"public_key": "04bc2b0adc1106e45fa86a3507cbec5bc834c33780c7ae774b885ac50c8489fc481ae5198457e5733e3f91e2b68df10ba55fa0408a918e4f37e475591cfa41d31d",
"public_key_type": "uncompressed",
"address": "12NzK7AbrtY5evVfDb7nnM5DNtbjGKBB6g",
"lot": null,
"sequence": null
}
BIP38 Decrypted: {
"wif": "5KZ2wb3ANziUbxcxLDq6nK854r6wF3qnxvk6rBVnKhdrRS3YcHb",
"private_key": "e4c27e23f2b243ca0cea2695362a48aaefba35951bcbaad9ebab1d7ab2a1b8e9",
"wif_type": "wif",
"public_key": "04bc2b0adc1106e45fa86a3507cbec5bc834c33780c7ae774b885ac50c8489fc481ae5198457e5733e3f91e2b68df10ba55fa0408a918e4f37e475591cfa41d31d",
"public_key_type": "uncompressed",
"seed": "99241d58245c883896f80843d2846672d7312e6195ca1a6c",
"address": "12NzK7AbrtY5evVfDb7nnM5DNtbjGKBB6g",
"lot": null,
"sequence": null
}
-----------------------------------------------------------------------------------------------------------------------------
Intermediate Passphrase: passphraseb7ruSNPsLdQF6TuHGftP9MBJM9mzUFqEpr37Quzua67SzYyhXtgGg32Ukkif4w
Encrypted WIF: {
"encrypted_wif": "6PgD5Q4BChU5kScKdbcbmdUtkEu9fBTDkB6EHmErH4kRyzveKRodpHzimL",
"confirmation_code": "cfrm38V84rmYgaHJLLMVTcRmZwnBF7Jj9gShJpWMfsM16r7DS1paysBseVo7WhJ7BwZUfh9ts8a",
"public_key": "0433f3d09ee3059b559194833063993626c6ce1bb25c3d3ee4e9b2d02ff7c3c6206d526a30d072c167176af1c45bf7331057c2ebc6701e3aebb74acdb3c2b9a5e5",
"seed": "99241d58245c883896f80843d2846672d7312e6195ca1a6c",
"public_key_type": "uncompressed",
"address": "1NwyXJShcScbkpB9dUwPqR3fv39Krt9xqH"
}
Confirm Code: {
"public_key": "0433f3d09ee3059b559194833063993626c6ce1bb25c3d3ee4e9b2d02ff7c3c6206d526a30d072c167176af1c45bf7331057c2ebc6701e3aebb74acdb3c2b9a5e5",
"public_key_type": "uncompressed",
"address": "1NwyXJShcScbkpB9dUwPqR3fv39Krt9xqH",
"lot": 567885,
"sequence": 1
}
BIP38 Decrypted: {
"wif": "5JdgMq9wsmqtMJ7YD5vahf89vgHQgeAqJieAP2h664vUqxhMriv",
"private_key": "6b9c6a32ae3b9d5fc2050f69e9f9825fece3276e3c979ae16e20c12f971de115",
"wif_type": "wif",
"public_key": "0433f3d09ee3059b559194833063993626c6ce1bb25c3d3ee4e9b2d02ff7c3c6206d526a30d072c167176af1c45bf7331057c2ebc6701e3aebb74acdb3c2b9a5e5",
"public_key_type": "uncompressed",
"seed": "99241d58245c883896f80843d2846672d7312e6195ca1a6c",
"address": "1NwyXJShcScbkpB9dUwPqR3fv39Krt9xqH",
"lot": 567885,
"sequence": 1
}
-----------------------------------------------------------------------------------------------------------------------------
Intermediate Passphrase: passphraseondJwvQGEWFNrMBiUhdVNwLNdPDHBRrVZkVuH3dVubC4JcuxLnKWFep8uGwhth
Encrypted WIF: {
"encrypted_wif": "6PnYeWbwUScx6DctoFqiJW2vDmsWCT6cVfwmjQXu8aTKLQ2aZfmin6RH6R",
"confirmation_code": "cfrm38VUic4gbBuLjvrDaXgwMeK42YR5zGLjpgNDF6p7Ro4EVAe9HkeDhzNZxJU9PCJ7PsbHy5s",
"public_key": "03bc2b0adc1106e45fa86a3507cbec5bc834c33780c7ae774b885ac50c8489fc48",
"seed": "99241d58245c883896f80843d2846672d7312e6195ca1a6c",
"public_key_type": "compressed",
"address": "1AUJ4rSiyRd7CmHo6K6n12QPpa1vKW2LaG"
}
Confirm Code: {
"public_key": "03bc2b0adc1106e45fa86a3507cbec5bc834c33780c7ae774b885ac50c8489fc48",
"public_key_type": "compressed",
"address": "1AUJ4rSiyRd7CmHo6K6n12QPpa1vKW2LaG",
"lot": null,
"sequence": null
}
BIP38 Decrypted: {
"wif": "L4tPZwEYQ5k4qJVhDqdJWzzCwyjCR1YMsrDEp5L33YMf8eKHmk5o",
"private_key": "e4c27e23f2b243ca0cea2695362a48aaefba35951bcbaad9ebab1d7ab2a1b8e9",
"wif_type": "wif-compressed",
"public_key": "03bc2b0adc1106e45fa86a3507cbec5bc834c33780c7ae774b885ac50c8489fc48",
"public_key_type": "compressed",
"seed": "99241d58245c883896f80843d2846672d7312e6195ca1a6c",
"address": "1AUJ4rSiyRd7CmHo6K6n12QPpa1vKW2LaG",
"lot": null,
"sequence": null
}
-----------------------------------------------------------------------------------------------------------------------------
Intermediate Passphrase: passphraseb7ruSNDGP7cmpocKZC2U6hDfT4dFEPB2dpdr9UNjwwUW2tSYkKukFv4JNYnXAs
Encrypted WIF: {
"encrypted_wif": "6PoG6xLK7sgeZP8gPzNmFvmp4serw1MTprunK29YwbwnxsnU7Jmb6EpHqs",
"confirmation_code": "cfrm38VX3h421KiP57NBU3ohrBh1bAgBbMvqntvcqw6wfgq9EaBmDJxLx3Mq6hTmRxBnLzQa8kR",
"public_key": "03bf9c150cef682e643e4745a4bba70fd183bf1726e3dd45d76fef599b39a3e1fc",
"seed": "99241d58245c883896f80843d2846672d7312e6195ca1a6c",
"public_key_type": "compressed",
"address": "15u9QmfwXC5Hi9mK9qwHCuCdGCw1rPwmug"
}
Confirm Code: {
"public_key": "03bf9c150cef682e643e4745a4bba70fd183bf1726e3dd45d76fef599b39a3e1fc",
"public_key_type": "compressed",
"address": "15u9QmfwXC5Hi9mK9qwHCuCdGCw1rPwmug",
"lot": 369861,
"sequence": 1
}
BIP38 Decrypted: {
"wif": "L1HftYcdEQ3D7Vn6f1psXumjY5PLdtGLx781C2bLnzZcPFTM7gDQ",
"private_key": "7963113c7ec95bedb41d415e393ea07edcdb2fe9ab080faededd38b210b320ff",
"wif_type": "wif-compressed",
"public_key": "03bf9c150cef682e643e4745a4bba70fd183bf1726e3dd45d76fef599b39a3e1fc",
"public_key_type": "compressed",
"seed": "99241d58245c883896f80843d2846672d7312e6195ca1a6c",
"address": "15u9QmfwXC5Hi9mK9qwHCuCdGCw1rPwmug",
"lot": 369861,
"sequence": 1
}
-----------------------------------------------------------------------------------------------------------------------------
```## Development
To get started, just fork this repo, clone it locally, and run:
```
pip install -e .[tests,docs]
```## Testing
You can run the tests with:
```
coverage run -m pytest
```To see the coverage:
```
coverage report
```Or use `tox` to run the complete suite against the full set of build targets, or pytest to run specific
tests against a specific version of Python.## Contributing
Feel free to open an [issue](https://github.com/talonlab/python-bip38/issues) if you find a problem,
or a pull request if you've solved an issue. And also any help in testing, development,
documentation and other tasks is highly appreciated and useful to the project.
There are tasks for contributors of all experience levels.For more information, see the [CONTRIBUTING.md](https://github.com/talonlab/python-bip38/blob/master/CONTRIBUTING.md) file.
## Supported Cryptocurrencies
This module supports more than 150+ cryptocurrencies, including the following:
NameNetworkWIF PrefixAddress PrefixAdcoinmainnet
0xb0
0x17
Anonmainnet
0x80
0x582
Argoneummainnet
0xbf
0x32
Artaxmainnet
0x97
0x17
Aryacoinmainnet
0x97
0x17
Asiacoinmainnet
0x97
0x17
Auroracoinmainnet
0x97
0x17
Avianmainnet
0x80
0x3c
Axemainnet
0xcc
0x37
Batamainnet
0xa4
0x19
BeetleCoinmainnet
0x99
0x1a
BelaCoinmainnet
0x99
0x19
BitCloudmainnet
0x99
0x19
BitSendmainnet
0xcc
0x66
Bitcoinmainnet
0x80
0x00
testnet
0xef
0x6f
regtest
0xef
0x6f
BitcoinAtommainnet
0x80
0x17
BitcoinGoldmainnet
0x80
0x26
BitcoinGreenmainnet
0x2e
0x26
BitcoinPlusmainnet
0x99
0x19
BitcoinPrivatemainnet
0x80
0x1325
testnet
0xef
0x1957
BitcoinSVmainnet
0x80
0x00
BitcoinZmainnet
0x80
0x1cb8
Bitcoremainnet
0x80
0x03
Blackcoinmainnet
0x99
0x19
BlockStampmainnet
0x80
0x00
Blocknodemainnet
0x4b
0x19
testnet
0x89
0x55
Bolivarcoinmainnet
0xd5
0x55
BritCoinmainnet
0x99
0x19
CPUChainmainnet
0x80
0x1c
CanadaeCoinmainnet
0x9c
0x1c
Cannacoinmainnet
0x9c
0x1c
Clamsmainnet
0x85
0x89
ClubCoinmainnet
0x99
0x1c
Compcoinmainnet
0x9c
0x1c
CranePaymainnet
0x7b
0x1c
Cravemainnet
0x99
0x46
Dashmainnet
0xcc
0x4c
testnet
0xef
0x8c
DeepOnionmainnet
0x9f
0x1f
Defcoinmainnet
0x9e
0x1e
Denariusmainnet
0x9e
0x1e
Diamondmainnet
0xda
0x5a
DigiBytemainnet
0x80
0x1e
Digitalcoinmainnet
0x9e
0x1e
Divimainnet
0xd4
0x1e
testnet
0xd4
0x1e
Dogecoinmainnet
0xf1
0x1e
testnet
0xf1
0x71
EDRCoinmainnet
0xdd
0x5d
Ecoinmainnet
0xdc
0x5c
Einsteiniummainnet
0xa1
0x21
Elastosmainnet
0x80
0x21
Energimainnet
0x6a
0x21
EuropeCoinmainnet
0xa8
0x21
Evrmoremainnet
0x80
0x21
testnet
0xef
0x6f
ExclusiveCoinmainnet
0xa1
0x21
FIXmainnet
0x3c
0x23
testnet
0xed
0x4c
Feathercoinmainnet
0x8e
0x0e
Firomainnet
0xd2
0x52
Firstcoinmainnet
0xa3
0x23
Flashcoinmainnet
0xc4
0x44
Fluxmainnet
0x80
0x1cb8
Foxdcoinmainnet
0x80
0x23
testnet
0xef
0x5f
FujiCoinmainnet
0xa4
0x24
GCRCoinmainnet
0x9a
0x26
GameCreditsmainnet
0xa6
0x26
GoBytemainnet
0xc6
0x26
Gridcoinmainnet
0xbe
0x3e
GroestlCoinmainnet
0x80
0x24
testnet
0xef
0x6f
Guldenmainnet
0x62
0x26
Helleniccoinmainnet
0xb0
0x30
Hempcoinmainnet
0xa8
0x28
Horizenmainnet
0x80
0x2089
Hushmainnet
0x80
0x1cb8
IXCoinmainnet
0x80
0x8a
InsaneCoinmainnet
0x37
0x66
InternetOfPeoplemainnet
0x31
0x75
Jumbucksmainnet
0xab
0x2b
Kobocoinmainnet
0xa3
0x23
Komodomainnet
0xbc
0x3c
LBRYCreditsmainnet
0x1c
0x55
Landcoinmainnet
0xb0
0x30
Linxmainnet
0xcb
0x4b
Litecoinmainnet
0xb0
0x30
testnet
0xef
0x6f
LitecoinCashmainnet
0xb0
0x1c
LitecoinZmainnet
0x80
0xab3
Lkrcoinmainnet
0xb0
0x30
Lynxmainnet
0xad
0x2d
Mazacoinmainnet
0xe0
0x32
Megacoinmainnet
0xb2
0x32
Minexcoinmainnet
0x80
0x4b
Monacoinmainnet
0xb0
0x32
Monkmainnet
0x37
0x33
Myriadcoinmainnet
0xb2
0x32
NIXmainnet
0x80
0x26
Namecoinmainnet
0x80
0x34
Navcoinmainnet
0x96
0x35
Nebliomainnet
0xb5
0x35
Neoscoinmainnet
0xb1
0x35
Neurocoinmainnet
0xb5
0x35
NewYorkCoinmainnet
0xbc
0x3c
Novacoinmainnet
0x88
0x08
NuBitsmainnet
0x96
0x19
NuSharesmainnet
0x95
0x3f
OKCashmainnet
0x03
0x37
Omnimainnet
0x80
0x00
testnet
0xef
0x6f
Onixmainnet
0xcb
0x4b
Particlmainnet
0x6c
0x38
Peercoinmainnet
0xb7
0x37
Pesobitmainnet
0xb7
0x37
Phoremainnet
0xd4
0x37
Pinkcoinmainnet
0x83
0x03
Pivxmainnet
0xd4
0x1e
testnet
0xef
0x8b
PoSWCoinmainnet
0xb7
0x37
Potcoinmainnet
0xb7
0x37
ProjectCoinmainnet
0x75
0x37
Putincoinmainnet
0xb7
0x37
Qtummainnet
0x80
0x3a
testnet
0xef
0x78
RSKmainnet
0x80
0x00
testnet
0xef
0x6f
Rapidsmainnet
0x2e
0x3d
Ravencoinmainnet
0x80
0x3c
testnet
0x80
0x6f
Reddcoinmainnet
0xbd
0x3d
Ripplemainnet
0x80
0x00
Ritocoinmainnet
0x8b
0x19
Rubycoinmainnet
0xbc
0x3c
Safecoinmainnet
0xbd
0x3d
Saluscoinmainnet
0xbf
0x3f
Scribemainnet
0x6e
0x3c
ShadowCashmainnet
0xbf
0x3f
testnet
0xff
0x7f
Slimcoinmainnet
0x46
0x3f
testnet
0x57
0x6f
Smileycoinmainnet
0x05
0x19
Solarcoinmainnet
0x92
0x12
Stashmainnet
0xcc
0x4c
testnet
0xef
0x8c
Stratismainnet
0xbf
0x3f
testnet
0xbf
0x41
Sugarchainmainnet
0x80
0x3f
testnet
0xef
0x42
Syscoinmainnet
0x80
0x3f
TOACoinmainnet
0xc1
0x41
TWINSmainnet
0x42
0x49
testnet
0xed
0x4c
ThoughtAImainnet
0x7b
0x07
UltimateSecureCashmainnet
0xbf
0x44
Unobtaniummainnet
0xe0
0x82
Vcashmainnet
0xc7
0x47
Vergemainnet
0x9e
0x1e
Vertcoinmainnet
0x80
0x47
Viacoinmainnet
0xc7
0x47
testnet
0xff
0x7f
VirtualCashmainnet
0xc7
0x47
Vivomainnet
0xc6
0x46
Voxelsmainnet
0xc6
0x46
Wagerrmainnet
0xc7
0x49
Whitecoinmainnet
0xc9
0x49
Wincoinmainnet
0xc9
0x49
XUEZmainnet
0xd4
0x4b
Ycashmainnet
0x80
0x1c28
ZClassicmainnet
0x80
0x1cb8
Zcashmainnet
0x80
0x1cb8
testnet
0xef
0x1d25
Zetacoinmainnet
0xe0
0x50
ZooBCmainnet
0x80
0x00
eGuldenmainnet
0xb0
0x30
## Donations
Buy me a coffee if You found this tool helpful:
- **Bitcoin** - 16c7ajUwHEMaafrceuYSrd35SDjmfVdjoS
- **Ethereum / ERC20** - 0xD3cbCB0B6F82A03C715D665b72dC44CEf54e6D9B
- **Solana** - 9cVoan5GvnpVvysEkFWEFR4k9cpTdWKmqQ6Gi7nwM5ESThank you very much for your support.
## License
Distributed under the [MIT](https://github.com/talonlab/python-bip38/blob/master/LICENSE) license. See ``LICENSE`` for more information.