UNPKG

icryptor

Version:

Encrypt tools for private accounts

75 lines (57 loc) 1.86 kB
#!/usr/bin/env node const readline = require('readline-sync') const blake2b = require('blake2b') const program = require('commander') const url = require('url') const bsx = require('base-x') const bs62 = bsx('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') const bs94 = bsx('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^&*()_+`-={}|[]\\:";\'<>?,./') function b2b(data) { var h=blake2b(32) h.update(data) return Buffer.from(h.digest()) } program .version("1.0.1") .option('-s, --site [type]', 'site: taobao.com, qq.com, ...') .option('-u, --user [type]', 'user: user0,user1, ...') .option('-p, --password [type]', 'main password') .option('-c, --count [type]', 'encrypt count') .option('-t, --template [type]', 'template: [user]:[password]@[site]:[count]') .option('-a, --allow', 'allow special: use base64 otherwise use base58') .parse(process.argv); if(program.template) { var u=url.parse('http://'+program.template) var sp=u.auth.split(':') program.user=sp[0] program.password=sp[1] program.site=u.hostname program.count=u.port } if(!program.user) { program.user = '' } if(!program.site) { program.site = '' } if(!program.count) { program.count=100 } if(!program.password) { program.password=readline.question("Input Password: ",{ hideEchoBack: true, }) } console.log('template is: '+program.user+':['+program.password.length+']@'+program.site+':'+program.count) program.template=program.user+':'+program.password+'@'+program.site+':'+program.count var pass = Buffer.from(program.template,'binary') for(var i=0;i<program.count;i++) { pass=b2b(pass) } var result; if(program.allow) { result = bs94.encode(pass) } else { result = bs62.encode(pass) } console.log(' password is: '+result)