Demo comparing Classical Brute Force vs Qiskit Aer Simulator vs IBM Quantum Hardware for password cracking using Grover's algorithm.
pip install -r requirements.txtAdd your IBM Quantum credentials in .env:
IBM_QUANTUM_TOKEN=7....
IBM_QUANTUM_INSTANCE=crn:.....
python grover.pyThe program will:
- Auto-load your IBM Quantum credentials from
.env - Connect to IBM Quantum and list available quantum computers
- Prompt you to choose a backend (or use least busy)
- Ask for a password to crack (2-3 characters recommended)
- Run three methods:
- Classical brute force (sequential search)
- Qiskit Aer simulator (local quantum simulation)
- IBM Quantum hardware (real quantum computer)
- Compare results in a table
Enter password length (2-3 recommended): 2
Enter a 2-character password: Hi
Executing three methods:
1. Classical brute force
2. Qiskit Aer simulator (local)
3. IBM Quantum hardware (ibm_brisbane)
You'll see output like:
Method Result Time Iterations/Attempts Accuracy
--------------------------------------------------------------------------------
Classical 'Hi' 0.0045s 2,945 100%
Qiskit Aer (sim) 'Hi' 0.3241s 48 98.2%
IBM ibm_brisbane 'Hi' 45.2341s 48 87.5%
🔍 Why Low Accuracy? The main issue: Your 12-qubit, 48-iteration Grover circuit transpiled to 714,861 gates!
Real quantum computers have:
Gate errors: ~0.1-1% error per gate Decoherence: Qubits lose information over time With 714K gates: Error accumulates massively → random results
- Classical: Tries thousands of combinations sequentially
- Quantum: Only √N Grover iterations needed (huge speedup!)
- Aer: Simulates quantum operations (slow on classical hardware)
- IBM Quantum: Runs on real quantum computer (true quantum advantage)
- Password Length: Use 2-3 characters for best results
- 2 chars = ~3,844 combinations, 12 qubits, 48 Grover iterations
- 3 chars = ~238,328 combinations, 18 qubits, 383 iterations
- IBM Queue Time: Real quantum hardware jobs may wait in queue
- Noise: Real quantum computers have decoherence/errors (lower accuracy)
grover.py- Main quantum password cracker.env- IBM Quantum credentials (keep secret!)requirements.txt- Python dependenciesREADME.md- This file
DO NOT commit .env to GitHub! It contains your API credentials.
Add to .gitignore:
.env