UNPKG

crypto-keygen-suite

Version:

Key generation utilities for cryptographic operations. YES I RENAMED IT. SIX STATE PROTOCOL!!! See its folder for all <3

80 lines (71 loc) 3 kB
import yargs from 'yargs/yargs'; import { hideBin } from 'yargs/helpers'; import crypto from 'crypto'; // Simulated Quantum Channel class B92QKD { constructor() { this.basis = ['0', '1']; // Quantum states used in B92 } generateQuantumBits(message) { return message.split('').map(char => { const bit = char.charCodeAt(0) % 2 === 0 ? '0' : '1'; // Convert ASCII character to quantum state return { bit, quantumState: this.basis[Number(bit)] }; }); } interceptAndDisturb(bits) { return bits.map(bitObj => { const eavesdropperChoice = Math.random() < 0.5 ? bitObj.quantumState : '-'; // Simulated eavesdropping return { originalState: bitObj.quantumState, intercepted: eavesdropperChoice }; }); } matchQuantumBits(bits) { return bits.filter(bitObj => bitObj.intercepted === bitObj.originalState).map(bitObj => bitObj.originalState); } } // CLI Setup async function main() { const argv = yargs(hideBin(process.argv)) .option('mode', { alias: 'm', type: 'string', choices: ['generate', 'intercept', 'match'], describe: 'Generate quantum bits, simulate interception, or match bits for key agreement', }) .option('message', { alias: 'msg', type: 'string', describe: 'Message to convert into quantum bits', }) .help() .argv; const b92 = new B92QKD(); if (argv.mode === 'generate') { if (!argv.message) { console.error("❌ Quantum bit generation requires a message!"); return; } const quantumBits = b92.generateQuantumBits(argv.message); console.log(`⚛️ Generated Quantum Bits: ${JSON.stringify(quantumBits, null, 2)}`); } else if (argv.mode === 'intercept') { if (!argv.message) { console.error("❌ Interception requires quantum bits to test eavesdropping!"); return; } const quantumBits = b92.generateQuantumBits(argv.message); const disturbedBits = b92.interceptAndDisturb(quantumBits); console.log(`🔍 Interception Simulation: ${JSON.stringify(disturbedBits, null, 2)}`); } else if (argv.mode === 'match') { if (!argv.message) { console.error("❌ Matching requires intercepted quantum bits to filter key agreement!"); return; } const quantumBits = b92.generateQuantumBits(argv.message); const disturbedBits = b92.interceptAndDisturb(quantumBits); const matchedKey = b92.matchQuantumBits(disturbedBits); console.log(`🔐 Final Quantum Key Agreement: ${matchedKey.join('')}`); } else { console.error("❌ Invalid mode. Use --mode generate | intercept | match"); } } console.log("🚀 Debug: Running main function..."); main();