想个密码太难了?来试试这个密码生成器

本文首发于公众号 极客枫哥 ,日更分享各种好玩的软件、编程知识和个人成长故事

大家好啊,我是枫哥~十年互联网程序员,擅长 js 逆向,python 爬虫,各种前后端技术。热衷于分享各种好玩、实用的技术和软件工具。

今天给大家分享一个我自己写的随机密码生成器,现在我们需要注册的应用越来越多,又不可能都用同样的密码,所以就写了一个密码生成器来随机生成,一起来看看吧。

看完本文你可以学到一下内容

  1. 如何用 nodejs 编写一个随机密码生成脚本;
  2. 如何将 nodjes 脚本注册成全局命令;
  3. 利用 alfred workflow 更方便的调用命令;

编写脚本

先梳理一下功能,实现一个密码生成器,需要支持传入密码长度,和是否包含特殊字符。命令执行完成后可以自动将密码复制到系统剪切板。

javascript 复制代码
function generateRandomPassword(length, includeSpecialChars) {
    let charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    if (includeSpecialChars) {
        charset += "!@#$%^&*()_+<>?";
    }
    let password = "";
    for (let i = 0, n = charset.length; i < length; ++i) {
        password += charset.charAt(Math.floor(Math.random() * n));
    }
    return password;
}

于是我们随便写写,就有了上面这个函数,测试一下生成一个 8 位的密码,也没什么问题。

接下来再编写一个入口函数,读取命令行传入的参数,传递给 generateRandomPassword 函数

javascript 复制代码
function main() {
    const args = process.argv.slice(2);
    const length = args[0] ? parseInt(args[0], 10) : 8;
    const includeSpecialChars = args.includes('--special');
    const password = generateRandomPassword(length, includeSpecialChars);
    console.log(password);
}

最后,我们再使用 clipboardy 来把生成好的密码复制到剪切板,一行代码就可以了,还是很方便的。

javascript 复制代码
clipboardy.writeSync(password);

注册全局命令

使用的时候如果每次都要 cd 到脚本的目录,然后执行 node index.js 8 就太麻烦了,有没有办法可以注册成一个全局的命令呢?答案肯定是可以的,而且也很简单。

我们只需要在 package.json 中配置一下 bin,randompassword 表示命令, ./index.js 表示要执行的脚本

javascript 复制代码
"bin": {
	"randompassword": "./index.js"
}

然后执行

javascript 复制代码
npm i . -g

这样脚本就注册成一个全局命令了,我们来测试一下

也是没有什么问题的,使用了一段时间后发现还是有点麻烦,要使用的时候我先要切换到命令行,然后调用命令。能不能把第一部省略呢?在任意时候都可以直接执行这个命令

创建 alfred workflow

创建一个新的 workflow 名字就叫 rp 好了,更简洁一些,Script 部分填写要执行的脚本

脚本和上面的基本一致,多了一个利用 alfy 将内容输出到 alfred 的功能。

javascript 复制代码
alfy.output([
  {
    title: '密码:' + password,
    subtitle: 'Press ⌘L to see the full error and ⌘C to copy it.',
    arg: `${password}`,
  },
]);

执行一下

最后在添加一个 Copy to Clipboard 步骤,按下回车就可以把密码复制到剪切板了,终于舒服了。

看到这里肯定有小伙伴想问了,你生成的密码这么复杂,根本记不住,后面怎么管理呢?后续的文章我会分享一下我的密码管理方案,敬请期待~

总结

本篇文章记录了我个人日常注册网站、应用时随机生成密码的探索,先后尝试了 node 脚本,全局命令,alfred workflow 等方式来优化这个步骤,希望能对你有所启发~感谢阅读。

相关推荐
岁岁岁平安6 天前
mysql上课总结(4)(MySQL中数据库的备份与还原(命令行或DataGrip中直接操作))
数据库·mysql·mysqldump·命令行·数据库的备份与还原·.exe
岁岁岁平安9 天前
mysql上课总结(2)(DCL的所有操作总结、命令行快速启动/关闭mysql服务)
数据库·mysql·命令行·权限·dcl·localhost
栩栩云生22 天前
📦 x-cmd pkg | hexyl - 终端中的彩色十六进制查看器,轻松解析二进制文件
运维·rust·命令行
鸿·蒙24 天前
Linux 命令行
linux·命令行
x-cmd25 天前
x-cmd pkg | carbonyl - 终端图形浏览器,浏览像素版网页
运维·性能优化·rust·嵌入式·终端·浏览器·命令行
rocksun1 个月前
我最喜欢的5个命令行工具
命令行
代吗喽1 个月前
Macos终端常用的命令行指令总结
macos·命令行
栩栩云生1 个月前
📦 x-cmd pkg | rg - 文本搜索工具,grep 命令的现代化替代品
运维·rust·命令行
x-cmd1 个月前
x-cmd pkg | tokei - 代码统计利器,助你快速了解项目进度
linux·rust·项目管理·命令行·yml·代码统计·项目进度
江湖十年1 个月前
厌倦了黑底白字?用 Go 给终端点颜色瞧瞧!
后端·go·命令行