This repository contains the implementation of Pollard's Rho algorithm for the secp256k1 elliptic curve. The goal is to generate private keys over O√n using a tortoise and many hares, similar to Pollard's Kangoroo, to run the program it is necessary to have the public key of the bitcoin wallet.
The expected time complexity of Pollard's Rho algorithm for elliptic curves is O(√n)
, where n
is the order of the group to the generating point(G). Given secp256k1, this translates to approximately O(2128)
.
- boost::multiprecision.
-
Clone this repository:
~/$ git clone https://github.com/lucaselblanc/pollardsrho.git
-
Install the necessary libraries:
sudo apt-get update sudo apt-get upgrade sudo apt-get install gcc g++ sudo apt-get install libboost-all-dev
-
Compile the project:
~/$cd pollardsrho ~/pollardsrho$ make
-
Run the program:
~/pollardsrho$ ./pollardsrho <compressed public key> <key range>
Replace
<compressed public key>
with the point (G) on the secp256k1 curve multiplied by your private key value, and<key range>
with the size of the search interval for (k).Example usage:
~/pollardsrho$ ./pollardsrho 02145d2611c823a396ef6712ce0f712f09b9b4f3135e3e0aa3230fb9b6d08d1e16 135
~/pollardsrho$ ./pollardsrho <compressed public key> <key range>
: Starts the search for the private key corresponding to the given public key.
- secp256k1.h
- random
- thread
- mutex
- atomic
- unordered_set
- omp.h
- boost/multiprecision/cpp_int.hpp
Contributions are welcome! Feel free to open issues or submit pull requests.
This project is licensed under the MIT License. See the LICENSE file for details.
-
🔭 I’m currently working on Data Leak Search
-
🚀 I’m looking to collaborate on: Cyber-Security
-
📝 I regularly read: https://github.com/bitcoin-core/secp256k1
-
📄 Know about my experiences: https://www.linkedin.com/in/lucas-jhonatan-215594208
My Github Stats