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

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

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

相关推荐
x-cmd21 分钟前
[250401] OpenAI 向免费用户开放 GPT-4o 图像生成功能 | Neovim 0.11 新特性解读
人工智能·gpt·文生图·openai·命令行·neovim
Bigger4 天前
Mac 命令行及 Linux 使用指南与示例
linux·前端·命令行
x-cmd6 天前
x-cmd install | Wuzz - Web 开发与安全测试利器,交互式 HTTP 工具
前端·网络协议·安全·http·浏览器·测试·命令行
ZhongyiChen9 天前
Git 是实现 Windows 之 Linux 开发环境的利器
git·操作系统·命令行
itachi-uchiha13 天前
Huawei 鲲鹏(ARM/Aarch64)服务器安装KVM虚拟机(非桌面视图)
kvm·命令行·无桌面
Bigger17 天前
终端美化神器——打造高颜值命令行输出
前端·node.js·命令行
Aska_Lv21 天前
生产redis数据出问题了_shell脚本刷redis数据
后端·命令行
我不叫王小红23 天前
还在用默认的主题?通过 Oh my push 美化你的 Powershell
shell·命令行
江禾藜1 个月前
rgin命令行工具--一键生成gin框架的开发脚手架
go·gin·命令行
沢田纲吉2 个月前
Linux 学习加油站(1)
linux·操作系统·命令行