Bash脚本生成密码


文档摘要

Bash 脚本生成密码 在软件安装或注册网站时,你可能经常需要生成一个随机密码。这种情况并不少见。 实现这一目标的方法有很多。你可以使用密码管理器/保险箱,它们通常提供随机生成密码的功能;或者使用专门的网站来帮你生成密码。 此外,你还可以在终端(命令行)中使用 Bash 来快速生成密码。实现这一功能的方式多种多样,我将介绍其中几种方法,并由你根据自己的需求选择最适合的方案。 :warning: 安全提示 此脚本旨在帮助你练习 Bash 脚本编写技能。虽然通过简单的 Bash 项目可以带来乐趣,但安全问题绝非儿戏。请务必不要将密码以明文形式保存在本地文件中,也不要手写记录在纸上。 我强烈建议大家使用安全且值得信赖的服务来生成和存储密码。

Bash 脚本生成密码

在软件安装或注册网站时,你可能经常需要生成一个随机密码。这种情况并不少见。

实现这一目标的方法有很多。你可以使用密码管理器/保险箱,它们通常提供随机生成密码的功能;或者使用专门的网站来帮你生成密码。

此外,你还可以在终端(命令行)中使用 Bash 来快速生成密码。实现这一功能的方式多种多样,我将介绍其中几种方法,并由你根据自己的需求选择最适合的方案。

⚠️ 安全提示

此脚本旨在帮助你练习 Bash 脚本编写技能。虽然通过简单的 Bash 项目可以带来乐趣,但安全问题绝非儿戏。请务必不要将密码以明文形式保存在本地文件中,也不要手写记录在纸上。

我强烈建议大家使用安全且值得信赖的服务来生成和存储密码。

脚本概要

首先,我们来快速了解一下脚本的功能:

  1. 在运行脚本时,用户可以选择密码的字符长度。
  2. 脚本将根据用户指定的长度,生成 5 个随机密码。

前置条件

你需要一个 Bash 终端和一个文本编辑器。你可以使用任何文本编辑器,例如 vivimnano 或 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 脚本生成随机密码的方法。

⚠️ 如前所述,请务必使用强密码以确保账户安全。在可能的情况下,还应启用双因素认证,这将为你的账户提供额外的安全层。

虽然脚本运行良好,但它假定用户会提供所需的输入。为避免出现任何问题,你可能需要对用户输入进行更高级的检查,以确保即使提供的输入不符合要求,脚本仍能正常运行。

贡献者

Alex Georgiev


作者与出处
原作者: bobbyiliev
来源:bobbyiliev
许可证:MIT
整理: 灏天文库整理
由灏天文库结构化整理,提供目录导航、全文检索与在线阅读,便于系统化学习
发布者: 作者: bobbyiliev 转发
评论区 (0)
U