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

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

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

相关推荐
栩栩云生8 天前
[241022]X-CMD 发布 v0.4.13:mac disk 命令,调整 ping 模块,advise 支持多种命令补全加载模式
macos·开源·命令行
纯洁的小魔鬼14 天前
redis 基础
数据库·redis·命令行
小白学鸿蒙15 天前
Harmony-鸿蒙开发常用Hdc命令大全
鸿蒙·命令行·harmony·hdc
x-cmd19 天前
[241206] X-CMD 发布 v0.4.15:env 升级,mirror 支持华为/腾讯 npm 镜像,pb-wayland 剪贴板
华为·npm·开源·node.js·命令行·镜像源·腾讯
Moshow郑锴21 天前
Spring Shell如何与SpringBoot集成并快速创建命令行界面 (CLI) 应用程序
spring boot·命令行·cli·spring shell
x-cmd1 个月前
x-cmd pkg | helix - 用 Rust 打造的文本编辑器,内置 LSP 和语法高亮,兼容 Vim 用户习惯
运维·rust·vim·开发·lsp·命令行·文本编辑
mixboot1 个月前
macOS sw_vers 查看当前系统版本
macos·命令行·系统版本
岁岁岁平安2 个月前
mysql上课总结(4)(MySQL中数据库的备份与还原(命令行或DataGrip中直接操作))
数据库·mysql·mysqldump·命令行·数据库的备份与还原·.exe
岁岁岁平安2 个月前
mysql上课总结(2)(DCL的所有操作总结、命令行快速启动/关闭mysql服务)
数据库·mysql·命令行·权限·dcl·localhost