Files
js-scripts/scripts/makepassword.js
2025-04-05 16:57:26 +08:00

44 lines
1.6 KiB
JavaScript

#! /usr/bin/env runjs
var UnixArgsUtil = Packages.me.hatter.tools.commons.args.UnixArgsUtil;
var main = () => {
UnixArgsUtil.parseGlobalArgs($ARGS);
if (UnixArgsUtil.ARGS.flags().containsAny('h', 'help')) {
println('Make password from secure random, usage:');
println(' makepassword.js');
println(' h|help Help');
println(' l|len|length Password length in bytes (default 10)');
println(' c|cnt|count Password count (default 1)');
println(' e|ecn|encode Password encoding(base32, base58, base64, hex) (default base58)');
return;
}
var len = UnixArgsUtil.ARGS.kvalueAny('l', 'len', 'length') || 10;
var cnt = UnixArgsUtil.ARGS.kvalueAny('c', 'cnt', 'count') || 1;
var enc = $STR(UnixArgsUtil.ARGS.kvalueAny('e', 'enc', 'encode') || 'base58').toLowerCase();
var isNotSupportedEnc = false;
var random = $$.secureRandom();
(parseInt(cnt)).times(() => {
var passwdBs = random.nextBytes(len);
if (['32', 'b32', 'base32'].contains(enc)) {
println($$.io().bytes(passwdBs).asBase32());
} else if (['58', 'b58', 'base58'].contains(enc)) {
println($$.io().bytes(passwdBs).asBase58());
} else if (['64', 'b64', 'base64'].contains(enc)) {
println($$.io().bytes(passwdBs).asBase64());
} else if (['hex'].contains(enc)) {
println($$.io().bytes(passwdBs).asHex());
} else {
isNotSupportedEnc = true;
}
});
if (isNotSupportedEnc) {
println('Not supported encode: ' + enc);
}
};
main();