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

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

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

相关推荐
vortex56 天前
Windows 电源管理和 Shutdown 命令详解
windows·stm32·命令行
Hello阿尔法9 天前
最强文本编辑器 Vim 常用命令集锦
linux·敏捷开发·命令行
77xxx11 天前
mac在iTerm2中安装zsh
mac·命令行
Lethehong12 天前
保姆级教程 | 在Ubuntu上部署Claude Code Plan Mode全过程
linux·命令行
一只叫煤球的猫15 天前
让版本控制变简单:Jujutsu (jj、git威力加强版) 使用手册
git·程序员·命令行
止观止17 天前
快速了解命令行界面(CLI)的行编辑模式
emacs·命令行·vi·快捷键·cli·行编辑
IT成长日记1 个月前
【自动化运维神器Ansible】playbook命令行变量定义全流程解析
运维·自动化·ansible·变量·命令行·playbook
爱吃猪排1 个月前
基于 Paddle Inference 3.0 的高性能 OCR 服务实现
人工智能·命令行
GetcharZp1 个月前
终端丑拒?效率低?是时候让 Oh My Zsh 唤醒你的 Ubuntu 了!
ubuntu·命令行
不简说1 个月前
有Trae助力1天时间用Node搞了个SSH命令行工具!解放双手~
开源·node.js·命令行