Bash 脚本生成密码 在软件安装或注册网站时,你可能经常需要生成一个随机密码。这种情况并不少见。 实现这一目标的方法有很多。你可以使用密码管理器/保险箱,它们通常提供随机生成密码的功能;或者使用专门的网站来帮你生成密码。 此外,你还可以在终端(命令行)中使用 Bash 来快速生成密码。实现这一功能的方式多种多样,我将介绍其中几种方法,并由你根据自己的需求选择最适合的方案。 :warning: 安全提示 此脚本旨在帮助你练习 Bash 脚本编写技能。虽然通过简单的 Bash 项目可以带来乐趣,但安全问题绝非儿戏。请务必不要将密码以明文形式保存在本地文件中,也不要手写记录在纸上。 我强烈建议大家使用安全且值得信赖的服务来生成和存储密码。
在软件安装或注册网站时,你可能经常需要生成一个随机密码。这种情况并不少见。
实现这一目标的方法有很多。你可以使用密码管理器/保险箱,它们通常提供随机生成密码的功能;或者使用专门的网站来帮你生成密码。
此外,你还可以在终端(命令行)中使用 Bash 来快速生成密码。实现这一功能的方式多种多样,我将介绍其中几种方法,并由你根据自己的需求选择最适合的方案。
此脚本旨在帮助你练习 Bash 脚本编写技能。虽然通过简单的 Bash 项目可以带来乐趣,但安全问题绝非儿戏。请务必不要将密码以明文形式保存在本地文件中,也不要手写记录在纸上。
我强烈建议大家使用安全且值得信赖的服务来生成和存储密码。
首先,我们来快速了解一下脚本的功能:
你需要一个 Bash 终端和一个文本编辑器。你可以使用任何文本编辑器,例如 vi、vim、nano 或 Visual Studio Code。
我是在本地 Linux 笔记本上运行此脚本的,但如果你使用的是 Windows PC,也可以通过 SSH 连接到任意服务器并在那里执行脚本。
尽管脚本本身非常简单,但具备一些基本的 Bash 脚本知识将有助于你更好地理解脚本及其工作原理。
Linux 的一大优势在于,你可以通过多种方式完成许多任务。在生成随机字符字符串方面也是如此。
你可以使用多个命令来生成随机字符字符串。我将介绍其中几种,并提供一些示例。
date 命令。date 命令会输出当前日期和时间。不过,我们还可以进一步处理其输出,将其用作随机生成的密码。例如,我们可以使用 MD5、SHA 对日期进行哈希处理,或者直接通过 Base64 编码。以下是一些示例:date | md5sum 94cb1cdecfed0699e2d98acd9a7b8f6d -
使用 sha256sum:
date | sha256sum 30a0c6091e194c8c7785f0d7bb6e1eac9b76c0528f02213d1b6a5fbcc76ceff4 -
使用 Base64:
date | base64 0YHQsSDRj9C90YMgMzAgMTk6NTE6NDggRUVUIDIwMjEK
openssl 来生成伪随机字节,并将结果通过 Base64 编码。例如:openssl rand -base64 10 9+soM9bt8mhdcw==
请注意,你的系统可能未安装 openssl,因此你可能需要先安装它才能使用。
/dev/urandom,因为它专为大多数加密用途设计。我们还需要使用 tr 对输出进行处理以转换字符。例如:tr -cd '[:alnum:]' < /dev/urandom | fold -w10 | head -n 1
此命令从 /dev/urandom 获取输出,并使用 tr 将其转换为字符,同时包含所有字母和数字,并输出指定数量的字符。
首先,我们使用 shebang 来指定脚本的开头。shebang 告诉操作系统使用哪个解释器来解析文件的其余部分。
#!/bin/bash
接下来,我们可以继续请求用户输入。在此示例中,我们希望了解密码所需的字符长度:
# Ask user for password length clear printf "\n" read -p "How many characters you would like the password to have? " pass_length printf "\n"
然后生成密码并将其打印出来,供用户使用。
# This is where the magic happens! # Generate a list of 10 strings and cut it to the desired value provided from the user for i in {1..10}; do (tr -cd '[:alnum:]' < /dev/urandom | fold -w${pass_length} | head -n 1); done # Print the strings printf "$pass_output\n" printf "Goodbye, ${USER}\n"
#!/bin/bash #======================================= # Password generator with login option #======================================= # Ask user for the string length clear printf "\n" read -p "How many characters you would like the password to have? " pass_length printf "\n" # This is where the magic happens! # Generate a list of 10 strings and cut it to the desired value provided from the user for i in {1..10}; do (tr -cd '[:alnum:]' < /dev/urandom | fold -w${pass_length} | head -n 1); done # Print the strings printf "$pass_output\n" printf "Goodbye, ${USER}\n"
以上就是如何使用简单的 Bash 脚本生成随机密码的方法。
⚠️ 如前所述,请务必使用强密码以确保账户安全。在可能的情况下,还应启用双因素认证,这将为你的账户提供额外的安全层。
虽然脚本运行良好,但它假定用户会提供所需的输入。为避免出现任何问题,你可能需要对用户输入进行更高级的检查,以确保即使提供的输入不符合要求,脚本仍能正常运行。