https://github.com/arec1b0/quantum_cryptographic_toolkit
The Quantum Cryptographic Toolkit (QCT) is a comprehensive framework designed to facilitate the development, testing, and deployment of quantum-resistant cryptographic algorithms.
https://github.com/arec1b0/quantum_cryptographic_toolkit
algorithms-included modular-design security-analysis
Last synced: 8 months ago
JSON representation
The Quantum Cryptographic Toolkit (QCT) is a comprehensive framework designed to facilitate the development, testing, and deployment of quantum-resistant cryptographic algorithms.
- Host: GitHub
- URL: https://github.com/arec1b0/quantum_cryptographic_toolkit
- Owner: arec1b0
- License: mit
- Created: 2024-08-14T03:21:45.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-09-04T00:22:10.000Z (almost 2 years ago)
- Last Synced: 2025-03-20T23:33:59.388Z (about 1 year ago)
- Topics: algorithms-included, modular-design, security-analysis
- Language: Rust
- Homepage:
- Size: 72.3 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# Quantum Cryptographic Toolkit
[](https://doi.org/10.5281/zenodo.13317139)
## Description
The Quantum Cryptographic Toolkit is a collection of tools and libraries written in Rust, designed to develop, test, and deploy quantum-resistant cryptographic algorithms. It supports several well-known quantum-safe algorithms, making it a powerful resource for post-quantum cryptography.
## Project Structure
The project is structured as follows:
- **src/algorithms/**: Contains implementations of various quantum-resistant cryptographic algorithms, including:
- **NewHope**: Lattice-based key exchange.
- **SPHINCS+**: Stateless hash-based digital signature scheme.
- **McEliece**: Code-based cryptosystem.
- **SIKE**: Supersingular isogeny-based key encapsulation mechanism.
- **FrodoKEM** and **Kyber** (located in `experimental`): Lattice-based key encapsulation algorithms.
- **src/profiling/**: Contains tools for profiling the performance of cryptographic algorithms.
- **src/core.rs**: Core library functionality providing the main interface for interacting with the algorithms and profiling tools.
- **src/main.rs**: Entry point for running algorithm demonstrations and profiling.
## Usage
To use the toolkit, you can initialize the core library and run demonstrations or profiling as shown below:
```rust
use quantum_cryptographic_toolkit::core::CryptoToolkit;
fn main() {
let toolkit = CryptoToolkit::new();
toolkit.run_algorithm_demo();
toolkit.profile_algorithms();
}
```
### Example - Using NewHope Algorithm
Here’s a simple example that demonstrates how to use the NewHope algorithm for key exchange:
```rust
use quantum_cryptographic_toolkit::algorithms::newhope::NewHope;
fn main() {
let newhope = NewHope::new();
let public_key = vec![1, 2, 3, 4];
let shared_secret = newhope.exchange(&public_key);
println!("Shared secret: {:?}", shared_secret);
}
```
## Installation
To include the Quantum Cryptographic Toolkit in your Rust project, add the following to your `Cargo.toml`:
```toml
[dependencies]
quantum_cryptographic_toolkit = { path = "path/to/quantum_cryptographic_toolkit" }
```
Ensure that you have all the necessary dependencies installed, and run `cargo build` to compile the project.
## Running with Docker
You can also use Docker to containerize and run the toolkit. To build and run the Docker image:
```bash
podman build -t quantum_cryptographic_toolkit .
podman run --rm -it quantum_cryptographic_toolkit
```
This will build the Docker container and run the project inside an isolated environment.
## Examples
The repository contains several examples that demonstrate how to use the various cryptographic algorithms. You can run them by using `cargo run --example `. Examples include:
- **NewHope Example**:
```bash
cargo run --example newhope_example
```
- **SPHINCS+ Example**:
```bash
cargo run --example sphincs_example
```
## Contributing
Contributions are welcome! Please follow the guidelines outlined in the [CONTRIBUTING.md](CONTRIBUTING.md) file. Contributions can include bug reports, feature requests, or even improvements to the cryptographic algorithms implemented.
## License
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for more details.