# SECP256k2: A Modern Library for Elliptic Curve Cryptography
[![Google Colab](https://img.shields.io/badge/Google_Clab-Run_Now-50AF95?style=plastic)](https://colab.research.google.com/drive/1cYAahMj6n03I3yA5DnDVwbxhDbg9nuwA?usp=sharing) [![PyPI - Downloads](https://img.shields.io/pypi/dd/secp256k1?style=plastic&color=0075A8)](https://pypi.org/project/secp256k2/ 'PyPI - SECP256K2 - Download Per Day') [![GitHub closed pull requests](https://img.shields.io/github/issues-pr-closed/secp256k2/secp256k2?style=plastic&color=CA4245)
](https://github.com/secp256k2/secp256k2/pulls) [![GitHub issues](https://img.shields.io/github/issues-raw/secp256k2/secp256k2?style=plastic&color=CA4245)](https://github.com/secp256k2/secp256k2/issues) [![PyPI - License](https://img.shields.io/pypi/l/secp256k2?color=50AF95)](https://github.com/secp256k2/secp256k2/blob/main/LICENSE)
[![PyPI - Status](https://img.shields.io/pypi/status/SECP256K2?style=plastic&color=50AF95)
](https://pypi.org/project/secp256k2/) [![Read the Docs](https://img.shields.io/readthedocs/secp256k2?color=50AF95)
](https://secp256k2.readthedocs.io/en/latest/) [![programmer Official Website](https://img.shields.io/badge/Programmer_Website-Mmdrza.Com-0075A8?style=plastic)](https://mmdrza.com) [![](https://img.shields.io/badge/Donate_-Bitcoin_Wallet-F7931A?style=plastic&logo=bitcoin)](https://github.com/secp256k2/secp256k2#donate)
---
## Introduction
**SECP256k2** is a high-performance and easy-to-use library for working with the SECP256k1 elliptic curve. This library is meticulously designed to provide a robust set of functionalities needed for the development of secure, fast, and efficient cryptographic applications.
## Features
- **Optimized Performance:** Leveraging optimized algorithms and efficient code structures for high-speed operations on the SECP256k1 curve.
- **Comprehensive Toolset:** Offering a wide array of functionalities ranging from basic arithmetic operations to advanced cryptographic protocols.
- **Cross-Platform:** Written in `C` & `Python`, _SECP256k2_ is designed to be used on multiple operating systems including Windows and Linux & Mac.
## Getting Started
### Installation
#### windows with `pip`
```bash
pip install --upgrade secp256k2
```
#### linux and Mac with `pip3`
```bash
pip3 install --upgrade secp256k2
```
### Generate and Converet 10,000 Key to Compress and Uncompress Address. ( Check Now in [Google Colab](https://colab.research.google.com/drive/1cYAahMj6n03I3yA5DnDVwbxhDbg9nuwA#scrollTo=qtb00EBtyCUA) )
```python
import os, timeit
setup_code = """
from os import urandom
from secp256k2 import Contactor
cont = Contactor()
def test_Profile_1():
numd = urandom(32)[0]
caddr = cont.privatekey_to_address(0, True, numd)
uaddr = cont.privatekey_to_address(0, False, numd)
"""
# // Total Generated
num = 10000
time1 = timeit.timeit("test_Profile_1()", setup=setup_code, number=num)
print(f"Generated & Convereted {format(num, ',')} Key To : {time1:.6f} sec")
```
>[!NOTE]
> Output : `Generated & Convereted 10,000 Key To : 0.393369 sec`
### Usage
A quick example to get you started with SECP256k2:
```python
from secp256k2 import Contactor
cont = Contactor()
dec = 0x00000000000000000000000000000000000000000000001
wif_compress = cont.Decimal_To_Wif(dec, True)
wif_uncompress = cont.Decimal_To_Wif(dec, False)
```
---
compressed and uncompressed bitcoin address wallet from decimal (integer).
```python
from secp256k2 import Contactor
# added Contactor class to project script
co = Contactor()
# dec
dec = 0xffffffffffffffffffffff880000000000000
compress_address = co.Decimal_To_Addr(dec, addr_type=0, compress=True)
uncompress_address = co.Decimal_To_Addr(dec, addr_type=0, compress=False)
```
---
Convert Decimal (Number) To Ethereum Address (Maximum Range: `115792089237316195423570985008687907852837564279074904382605163141518161494337`):
```python
from secp256k2 import Contactor
cont = Contactor()
dec_num = 1 # example , can use any range number to
# ethereum address generated from decimal number
eth_address = cont.Decimal_To_ETH_Addr(dec_num)
```
---
convert and Generated Wif Key from decimal Number:
```python
from secp256k2 import Contactor
co = Contactor()
dec = 0xffffffffffffffffffffffffff8999999999333666666
wif_compress = co.Decimal_To_Wif(dec, True)
wif_uncompress = co.Decimal_To_Wif(dec, False)
```
---
Decimal to RIPEMD160
```python
from secp256k2 import Contactor
co = Contactor()
dec = 0xfffffffffffffffffff99999999999
ripemd160 = co.Decimal_To_RIPEMD160(dec)
```
---
convert wif key to private key (hex):
```python
from secp256k2 import Contactor
co = Contactor()
WIF = "WIF_KEY_HERE"
privatekey = co.Wif_To_Hex(WIF)
```
### Convert Private Key To Wif Compressed and Uncompressed
```python
from secp256k2 import Contactor
cont = Contactor()
privatekey = "PRIVATE_KEY_HERE"
wif_compress = cont.btc_pvk_to_wif(privatekey, True)
wif_uncompress = cont.btc_pvk_to_wif(privatekey, False)
```
### Convert Wif to Private Key (integer/decimal):
```python
from secp256k2 import Contactor
cont = Contactor()
wif = "WIF_KEY_HERE"
privatekey = cont.btc_wif_to_pvk_int(wif)
```
### Convert Wif to Private Key (hex):
```python
from secp256k2 import Contactor
cont = Contactor()
wif = "WIF_KEY_HERE"
privatekey = cont.btc_wif_to_pvk_hex(wif)
```
### Convert Private Key (decimal) To RIPEMD160 (h160)
```python
from secp256k2 import Contactor
cont = Contactor()
privatekey = 12345678901234567891234567891234567789
ripemd160 = cont.privatekey_to_h160(privatekey)
```
### Convert Private Key (Decimal) To Compressed and uncompressed Address
- **addr_type** (_int_) : P2PKH = `0`, P2SH = `1`, P2WPKH = `2`
- **compress** (_bool_) : `True` : Compress, `False` : Uncompress
- **private key** (_decimal_) : `0` - `115792089237316195423570985008687907852837564279074904382605163141518161494337`
```python
from secp256k2 import Contactor
cont = Contactor()
privatekey = 12345678901234567891234567891234567789
address_compress = cont.privatekey_to_address(0, True, privatekey)
address_uncompress = cont.privatekey_to_address(0, False, privatekey)
```
## Documentation
For more detailed information and advanced usage, please refer to the [full documentation](https://secp256k2.github.io/secp256k2).
## Contribution
We welcome contributions from the open-source community. If you find any issues or would like to propose enhancements, please feel free to open an issue or submit a pull request.
## License
SECP256k2 is licensed under MIT. For more information, please see the [LICENSE](/LICENSE) file.
---
### Donate:
Bitcoin:`1MMDRZA12xdBLD1P5AfEfvEMErp588vmF9`
Programmer And Owner : [PyMmdrza](https://github.com/Pymmdrza)
Email : Mmdrza@usa.com
official website : <a title="official website programmer" href="https://mmdrza.com/" rel="follow">MMDRZA.COM</a>
Raw data
{
"_id": null,
"home_page": "https://github.com/secp256k2/secp256k2",
"name": "secp256k2",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "secp256k2,secp256k1,Wif,Mnemonic,Binary,seed,Foundation,Private,Key,HEX,Mnemonic,Binary,Bytes,bitcoin,ethereum,tron,dogecoin,zcash,digibyte,bitcoin gold,wallet,bip32,bip39,litecoin,qtum,ravencoin,BTC,ETH,TRX,DOGE,BTG,LTC,ZEC,AXE,DASH",
"author": "Mohammadreza (Mmdrza.Com)",
"author_email": "Pymmdrza@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/4c/4c/3d538c11cf57b1f4ae692823d67cd484de73c24072268aaff3d0fd865eea/secp256k2-1.4.6.tar.gz",
"platform": null,
"description": "# SECP256k2: A Modern Library for Elliptic Curve Cryptography\n\n[![Google Colab](https://img.shields.io/badge/Google_Clab-Run_Now-50AF95?style=plastic)](https://colab.research.google.com/drive/1cYAahMj6n03I3yA5DnDVwbxhDbg9nuwA?usp=sharing) [![PyPI - Downloads](https://img.shields.io/pypi/dd/secp256k1?style=plastic&color=0075A8)](https://pypi.org/project/secp256k2/ 'PyPI - SECP256K2 - Download Per Day') [![GitHub closed pull requests](https://img.shields.io/github/issues-pr-closed/secp256k2/secp256k2?style=plastic&color=CA4245)\n](https://github.com/secp256k2/secp256k2/pulls) [![GitHub issues](https://img.shields.io/github/issues-raw/secp256k2/secp256k2?style=plastic&color=CA4245)](https://github.com/secp256k2/secp256k2/issues) [![PyPI - License](https://img.shields.io/pypi/l/secp256k2?color=50AF95)](https://github.com/secp256k2/secp256k2/blob/main/LICENSE)\n [![PyPI - Status](https://img.shields.io/pypi/status/SECP256K2?style=plastic&color=50AF95)\n](https://pypi.org/project/secp256k2/) [![Read the Docs](https://img.shields.io/readthedocs/secp256k2?color=50AF95)\n](https://secp256k2.readthedocs.io/en/latest/) [![programmer Official Website](https://img.shields.io/badge/Programmer_Website-Mmdrza.Com-0075A8?style=plastic)](https://mmdrza.com) [![](https://img.shields.io/badge/Donate_-Bitcoin_Wallet-F7931A?style=plastic&logo=bitcoin)](https://github.com/secp256k2/secp256k2#donate)\n\n\n---\n## Introduction\n\n**SECP256k2** is a high-performance and easy-to-use library for working with the SECP256k1 elliptic curve. This library is meticulously designed to provide a robust set of functionalities needed for the development of secure, fast, and efficient cryptographic applications.\n\n\n## Features\n\n- **Optimized Performance:** Leveraging optimized algorithms and efficient code structures for high-speed operations on the SECP256k1 curve.\n- **Comprehensive Toolset:** Offering a wide array of functionalities ranging from basic arithmetic operations to advanced cryptographic protocols.\n- **Cross-Platform:** Written in `C` & `Python`, _SECP256k2_ is designed to be used on multiple operating systems including Windows and Linux & Mac.\n\n## Getting Started\n\n### Installation\n\n#### windows with `pip`\n```bash\npip install --upgrade secp256k2\n```\n\n#### linux and Mac with `pip3`\n```bash\npip3 install --upgrade secp256k2\n```\n\n### Generate and Converet 10,000 Key to Compress and Uncompress Address. ( Check Now in [Google Colab](https://colab.research.google.com/drive/1cYAahMj6n03I3yA5DnDVwbxhDbg9nuwA#scrollTo=qtb00EBtyCUA) )\n\n```python\nimport os, timeit\n\nsetup_code = \"\"\"\nfrom os import urandom\nfrom secp256k2 import Contactor\n\ncont = Contactor()\n\ndef test_Profile_1():\n numd = urandom(32)[0]\n caddr = cont.privatekey_to_address(0, True, numd)\n uaddr = cont.privatekey_to_address(0, False, numd)\n\"\"\"\n\n# // Total Generated \nnum = 10000\n\ntime1 = timeit.timeit(\"test_Profile_1()\", setup=setup_code, number=num)\n\n\nprint(f\"Generated & Convereted {format(num, ',')} Key To : {time1:.6f} sec\")\n```\n>[!NOTE]\n> Output : `Generated & Convereted 10,000 Key To : 0.393369 sec`\n\n### Usage\n\nA quick example to get you started with SECP256k2:\n\n```python\nfrom secp256k2 import Contactor\n\ncont = Contactor()\n\ndec = 0x00000000000000000000000000000000000000000000001\n\nwif_compress = cont.Decimal_To_Wif(dec, True)\n\nwif_uncompress = cont.Decimal_To_Wif(dec, False)\n\n```\n---\n\ncompressed and uncompressed bitcoin address wallet from decimal (integer).\n\n```python\nfrom secp256k2 import Contactor\n# added Contactor class to project script\nco = Contactor()\n# dec\ndec = 0xffffffffffffffffffffff880000000000000\ncompress_address = co.Decimal_To_Addr(dec, addr_type=0, compress=True)\nuncompress_address = co.Decimal_To_Addr(dec, addr_type=0, compress=False)\n```\n---\n\nConvert Decimal (Number) To Ethereum Address (Maximum Range: `115792089237316195423570985008687907852837564279074904382605163141518161494337`):\n\n```python\nfrom secp256k2 import Contactor\n\ncont = Contactor()\n\ndec_num = 1 # example , can use any range number to \n# ethereum address generated from decimal number \neth_address = cont.Decimal_To_ETH_Addr(dec_num)\n```\n---\nconvert and Generated Wif Key from decimal Number:\n```python\nfrom secp256k2 import Contactor\n\nco = Contactor()\n\ndec = 0xffffffffffffffffffffffffff8999999999333666666\nwif_compress = co.Decimal_To_Wif(dec, True)\nwif_uncompress = co.Decimal_To_Wif(dec, False)\n```\n---\nDecimal to RIPEMD160\n\n```python\nfrom secp256k2 import Contactor\n\nco = Contactor()\n\ndec = 0xfffffffffffffffffff99999999999\n\nripemd160 = co.Decimal_To_RIPEMD160(dec)\n```\n---\nconvert wif key to private key (hex):\n\n```python\nfrom secp256k2 import Contactor\n\nco = Contactor()\n\nWIF = \"WIF_KEY_HERE\"\n\nprivatekey = co.Wif_To_Hex(WIF)\n```\n\n### Convert Private Key To Wif Compressed and Uncompressed\n\n```python\nfrom secp256k2 import Contactor\n\ncont = Contactor()\n\nprivatekey = \"PRIVATE_KEY_HERE\"\n\nwif_compress = cont.btc_pvk_to_wif(privatekey, True)\n\nwif_uncompress = cont.btc_pvk_to_wif(privatekey, False)\n\n```\n\n### Convert Wif to Private Key (integer/decimal):\n\n```python\nfrom secp256k2 import Contactor\n\ncont = Contactor()\n\nwif = \"WIF_KEY_HERE\"\n\nprivatekey = cont.btc_wif_to_pvk_int(wif)\n```\n\n### Convert Wif to Private Key (hex):\n\n```python\n\nfrom secp256k2 import Contactor\n\ncont = Contactor()\n\nwif = \"WIF_KEY_HERE\"\n\nprivatekey = cont.btc_wif_to_pvk_hex(wif)\n```\n\n### Convert Private Key (decimal) To RIPEMD160 (h160)\n\n```python\n\nfrom secp256k2 import Contactor\n\ncont = Contactor()\n\nprivatekey = 12345678901234567891234567891234567789\n\nripemd160 = cont.privatekey_to_h160(privatekey)\n\n```\n\n### Convert Private Key (Decimal) To Compressed and uncompressed Address\n\n- **addr_type** (_int_) : P2PKH = `0`, P2SH = `1`, P2WPKH = `2`\n- **compress** (_bool_) : `True` : Compress, `False` : Uncompress\n- **private key** (_decimal_) : `0` - `115792089237316195423570985008687907852837564279074904382605163141518161494337`\n\n```python\n\nfrom secp256k2 import Contactor\n\ncont = Contactor()\n\nprivatekey = 12345678901234567891234567891234567789\n\naddress_compress = cont.privatekey_to_address(0, True, privatekey)\n\naddress_uncompress = cont.privatekey_to_address(0, False, privatekey)\n```\n## Documentation\n\nFor more detailed information and advanced usage, please refer to the [full documentation](https://secp256k2.github.io/secp256k2).\n\n## Contribution\n\nWe welcome contributions from the open-source community. If you find any issues or would like to propose enhancements, please feel free to open an issue or submit a pull request.\n\n## License\n\nSECP256k2 is licensed under MIT. For more information, please see the [LICENSE](/LICENSE) file.\n\n---\n\n### Donate:\n\nBitcoin:`1MMDRZA12xdBLD1P5AfEfvEMErp588vmF9`\n\n\nProgrammer And Owner : [PyMmdrza](https://github.com/Pymmdrza)\n\nEmail : Mmdrza@usa.com\n\nofficial website : <a title=\"official website programmer\" href=\"https://mmdrza.com/\" rel=\"follow\">MMDRZA.COM</a>\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Generated and Converted Keys with any Type Foundation from Private Key [WIF Hexed Mnemonic and Binary Bytes seed] in Python",
"version": "1.4.6",
"project_urls": {
"Bug Tracker": "https://github.com/secp256k2/secp256k2/issues",
"Documentation": "https://github.com/secp256k2/secp256k2",
"Homepage": "https://github.com/secp256k2/secp256k2",
"Source Code": "https://github.com/secp256k2/secp256k2",
"Website": "https://mmdrza.com"
},
"split_keywords": [
"secp256k2",
"secp256k1",
"wif",
"mnemonic",
"binary",
"seed",
"foundation",
"private",
"key",
"hex",
"mnemonic",
"binary",
"bytes",
"bitcoin",
"ethereum",
"tron",
"dogecoin",
"zcash",
"digibyte",
"bitcoin gold",
"wallet",
"bip32",
"bip39",
"litecoin",
"qtum",
"ravencoin",
"btc",
"eth",
"trx",
"doge",
"btg",
"ltc",
"zec",
"axe",
"dash"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "b1851e8c2ec27d4f382a63353182d0be3439434aa7775f932a9c929fd3949d40",
"md5": "c7e26652e6bec7faab769cd4e924dcdd",
"sha256": "00c26e5a6187746c9a84bbfc87c9f870f903555d27beacbd39fa881f8737003c"
},
"downloads": -1,
"filename": "secp256k2-1.4.6-py3-none-any.whl",
"has_sig": false,
"md5_digest": "c7e26652e6bec7faab769cd4e924dcdd",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 6220287,
"upload_time": "2024-02-03T19:11:02",
"upload_time_iso_8601": "2024-02-03T19:11:02.330829Z",
"url": "https://files.pythonhosted.org/packages/b1/85/1e8c2ec27d4f382a63353182d0be3439434aa7775f932a9c929fd3949d40/secp256k2-1.4.6-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4c4c3d538c11cf57b1f4ae692823d67cd484de73c24072268aaff3d0fd865eea",
"md5": "824d35b43c678240aea632456861dbc1",
"sha256": "4efd223615987534f170e57c38901d4b489509dfb39ecc653ceba51814408c78"
},
"downloads": -1,
"filename": "secp256k2-1.4.6.tar.gz",
"has_sig": false,
"md5_digest": "824d35b43c678240aea632456861dbc1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5977544,
"upload_time": "2024-02-03T19:11:09",
"upload_time_iso_8601": "2024-02-03T19:11:09.207754Z",
"url": "https://files.pythonhosted.org/packages/4c/4c/3d538c11cf57b1f4ae692823d67cd484de73c24072268aaff3d0fd865eea/secp256k2-1.4.6.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-02-03 19:11:09",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "secp256k2",
"github_project": "secp256k2",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "secp256k2"
}