@meg-shit/aes-256-ecb-js
Version:
encrypt and dencrypt by aes-256-ecb for Javascript
87 lines (81 loc) • 2.6 kB
JavaScript
;
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;