UNPKG

@meg-shit/aes-256-ecb-js

Version:

encrypt and dencrypt by aes-256-ecb for Javascript

87 lines (81 loc) 2.6 kB
'use strict'; const yargs = require('yargs'); const picocolors = require('picocolors'); const index = require('./index.cjs'); require('crypto'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; } const yargs__default = /*#__PURE__*/_interopDefaultLegacy(yargs); class Logger { static info(jsonObject) { try { console.log(picocolors.cyan(JSON.stringify(jsonObject, null, 2))); } catch (error) { if (error instanceof TypeError) console.log(picocolors.bold(picocolors.magenta(error.stack))); else console.error(error); } } static error(error) { if (error instanceof Error) console.error(picocolors.red(error.stack)); else console.error(error); } } yargs__default.scriptName("aes-ecb").usage("$0 <cmd> [args] <data>").command("$0 <cmd> [args] <data>", "Encrypt or Decrypt by ECB", (yargs2) => { yargs2.positional("cmd", { describe: "Encrypt or Decrypt", choices: [ "encrypt", "decrypt" ], demandOption: true }).positional("data", { describe: "data to encrypt or decrypt", demandOption: true, type: "string" }).option("key", { alias: "k", describe: "ECB Key (8 bytes or 16 bytes)", type: "string" }).option("inputEncoding", { alias: "i", describe: "Input encoding" }).option("outputEncoding", { alias: "o", describe: "Output encoding" }).option("auto-padding", { alias: "a", describe: "Enable Auto padding (only works for encrypt)", default: true, type: "boolean" }).option("padding", { alias: "p", describe: "Auto padding String (only works for encrypt)", default: "08", type: "string" }).demandOption(["key"], "ECB Key is required"); }, (argv) => { console.log(argv); const { cmd, key, data, inputEncoding, outputEncoding, autoPadding, padding } = argv; const options = { autoPadding, padding }; if (inputEncoding) options.inputEncoding = inputEncoding; if (outputEncoding) options.outputEncoding = outputEncoding; try { if (cmd === "encrypt") { const ans = index.encrypt(data, key, options); Logger.info(ans); } else if (cmd === "decrypt") { const ans = index.decrypt(data, key, options); Logger.info(ans); } } catch (error) { Logger.error(error); } }).example("$0 encrypt -k <ECB KEY> meg-shit", "Encrypt by ECB").example("$0 decrypt -k <ECB KEY> KL4zliqPIQRZJngPAchBJA==", "Decrypt by ECB").showHelpOnFail(true).alias("h", "help").alias("v", "version").help().argv;