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

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

大家好啊,我是枫哥~十年互联网程序员,擅长 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 等方式来优化这个步骤,希望能对你有所启发~感谢阅读。

相关推荐
fly_over2 天前
Claude Code 从零复刻教程 第 1 篇:项目初始化与 CLI 骨架
学习·源码·ai编程·工具·命令行·claude code
Highcharts.js5 天前
Highcharts 命令行渲染指南:如何使用 Node 导出服务器批量生成图表图片
服务器·数据可视化·导出·命令行·图表·highcharts
子兮曰10 天前
CLI正在吞掉GUI:不是替代,是统治,AI时代的入口争夺战
人工智能·github·命令行
子兮曰11 天前
同样做中文平台自动化:为什么你越跑越贵,而 OpenCLI 越跑越稳
前端·github·命令行
看海的四叔11 天前
【Linux】命令行常规操作全攻略:入门+实战+速查
linux·运维·github·命令行·batch命令
vangie12 天前
你还在手敲长命令?这个 Shell 插件帮你自动提醒别名和现代替代工具
shell·命令行
雪碧聊技术17 天前
如何查看、登录服务器上的redis服务?Redis 运维速查:从连接认证到数据查询的全链路解析
linux·服务器·命令行·缓存数据库
SunnyRivers18 天前
快速理解vLLM命令行工具serve
命令行·serve·vllm
集成显卡19 天前
别局限于 Oh-My-Posh,试试 Rust 编写的 starship:极简超快且无限可定制的命令行提示符
程序员·代码规范·命令行