keygentoolshed
Version:
Key generation utilities for cryptographic operations. QUANTUM ENCRYPTION FOLDER UPDATE!!! See its folder for all <3
65 lines (53 loc) • 1.67 kB
JavaScript
// whatever nerd is reading my code this was inspired by gs1-key (https://www.npmjs.com/package/gs1-key)
import fs from 'fs';
import path from 'path';
function calculateCheckDigit(gtin) {
const digits = gtin.split('').map(Number);
const sum = digits.slice(0, -1).reduce((acc, digit, index) => {
return acc + (index % 2 === 0 ? digit : digit * 3);
}, 0);
const checkDigit = (10 - (sum % 10)) % 10;
return checkDigit;
}
function generateGS1Key(format) {
let key = '';
const length = {
'GTIN-8': 7,
'GTIN-12': 11,
'GTIN-13': 12,
'GTIN-14': 13,
'GSIN': 13,
'SSCC': 18
}[format];
if (!length) {
throw new Error('Invalid format specified.');
}
for (let i = 0; i < length; i++) {
key += Math.floor(Math.random() * 10).toString();
}
const checkDigit = calculateCheckDigit(key);
key += checkDigit;
return key;
}
const args = process.argv.slice(2);
let format = '';
if (args.length === 0) {
console.error('No format provided. Use --format followed by the format (GTIN-8, GTIN-12, GTIN-13, GTIN-14, GSIN, SSCC).');
process.exit(1);
}
for (let i = 0; i < args.length; i++) {
if (args[i] === '--format') {
format = args[i + 1];
break;
}
}
if (!format) {
console.error('Format not specified. Use --format followed by the format.');
process.exit(1);
}
try {
const gs1Key = generateGS1Key(format);
console.log(`Generated ${format}: ${gs1Key}`);
} catch (error) {
console.error('Error generating GS1 key:', error.message);
}