Skip to content

Repository files navigation

Quantum RNG & OTP Generator (Qiskit)

This project provides a Quantum Random Number Generator (QRNG)** and a Quantum OTP generator built using Qiskit. All quantum circuit logic is centralized into a single reusable module (circuit_builder.py) to keep the project clean and extensible.

The project uses:

  • Qiskit
  • Qiskit Aer (simulator backend)
  • Python 3.10+
  • uv pip for fast dependency installation

📁 Project Structure

project/ │── circuit_builder.py # Single shared circuit builder & runner │── qrng.py # Quantum random number generator │── quantum_otp.py # Quantum OTP generator │── main.py # Example runner (optional) │── README.md


🚀 Installation (using uv pip)

Install dependencies:

uv pip install qiskit qiskit-aer qiskit[visualization]

🎛 Features

✔ Quantum RNG (QRNG)

  • Generates integers in range 0 → N-1 using quantum randomness
  • Supports single-shot or multi-shot
  • Rejection sampling for non-power-of-2 ranges
  • Supports measurement histogram visualization

Usage:

from qrng import qrng
num = qrng(10, shots=1000, visualize=True)
print("Quantum RNG:", num)

✔ Quantum OTP Generator

Generates OTPs (minimum 6 digits) using quantum randomness.

Usage:

from quantum_otp import quantum_otp

otp = quantum_otp(8)
print("Quantum OTP:", otp)

📦 Module Overview

circuit_builder.py

Contains:

  • build_uniform_superposition_circuit()
  • run_circuit(shots, visualize)
  • shannon_entropy()

This provides:

  • A unified circuit builder
  • A reusable measurement pipeline
  • A clean base for future quantum modules

qrng.py

Quantum random number generation using:

qrng(num_outcomes, shots=1, visualize=False)

Notes:

  • shots=1 gives true quantum randomness
  • shots>1 samples distribution
  • Returns uniform values in [0, num_outcomes-1]

quantum_otp.py

Generates fixed-length OTP using quantum randomness.

Function:

quantum_otp(otp_length=6)

Features:

  • Minimum 6-digit OTP
  • Bit extraction from quantum measurement
  • Leading-zero padding

📝 License

MIT License — free to use and modify.

About

Truly random OTP generator using Qiskit

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages