介绍
在本项目中,你将学习如何创建一个符合特定安全要求的随机密码生成脚本。该脚本将生成一个包含至少一个数字、一个大写字母、一个小写字母以及一个来自 ><+-{}:.&; 集合的特殊字符的 12 位密码。本项目将为你提供脚本编写和随机数据处理的实际操作经验。
👀 预览
$ cd /home/labex/project
$ sh genpass.sh
## 示例
2Dsxw9+xS:27
🎯 任务
在本项目中,你将完成以下任务:
- 设置项目环境并创建必要的脚本文件。
- 实现生成符合指定复杂度要求的随机密码的逻辑。
- 测试密码生成脚本以确保其功能正常。
🏆 成果
完成本项目后,你将能够:
- 理解创建随机密码生成脚本的过程。
- 实现满足特定字符类型要求的密码生成算法。
- 测试并验证生成的密码,确保其符合预期标准。
设置项目环境
在这一步中,你将准备你的工作环境并创建密码生成脚本所需的文件。
打开终端,使用
cd命令导航到/home/labex/project目录:cd /home/labex/project使用
touch命令创建一个名为genpass.sh的新文件。这将是编写密码生成脚本的文件:touch genpass.sh在文本编辑器中打开
genpass.sh文件。你可以使用nano、vim或任何你喜欢的文本编辑器。在文件的最开头添加以下 shebang 行:#!/bin/zsh ## Random Password Generator ## This script generates a random password that meets the specified requirements.这一行告诉系统使用 zsh shell 来执行脚本。shebang 行后面的注释提供了脚本的简要描述。
实现密码生成逻辑
在这一步中,你将为 genpass.sh 脚本添加核心逻辑,以生成符合复杂度要求的随机密码。
在
genpass.sh文件中,添加以下函数来生成密码:## Function to generate a random password generate_password() { local length=12 local password='' ## Special characters local special_chars='><+-{}:.&;' local special_char="${special_chars:$RANDOM%${#special_chars}:1}" password+="$special_char" ## Digits local digits='0123456789' local digit="${digits:$RANDOM%${#digits}:1}" password+="$digit" ## Uppercase letters local upper_case='ABCDEFGHIJKLMNOPQRSTUVWXYZ' local upper="${upper_case:$RANDOM%${#upper_case}:1}" password+="$upper" ## Lowercase letters local lower_case='abcdefghijklmnopqrstuvwxyz' local lower="${lower_case:$RANDOM%${#lower_case}:1}" password+="$lower" ## Remaining characters local remaining_length=$((length - 4)) local characters='><+-{}:.&;0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' local num_characters=${#characters} for ((i = 0; i < remaining_length; i++)); do local random_char="${characters:$RANDOM%$num_characters:1}" password+="$random_char" done ## Shuffle the order of password characters password=$(echo "$password" | fold -w1 | shuf | tr -d '\n') echo "$password" }该函数的工作原理如下:
- 初始化密码时包含一个特殊字符、一个数字、一个大写字母和一个小写字母,以满足基本要求。
- 计算剩余字符的数量,以达到 12 位的目标长度。
- 从数字、字母(大小写)和特殊字符的池中随机选择剩余字符。
- 对密码进行随机排序,以确保特定字符不会总是出现在开头。
在
genpass.sh文件的末尾添加以下代码。这部分脚本调用generate_password函数并将生成的密码输出到控制台:## Generate password and output generate_password
测试密码生成器
在这一步中,你将测试 genpass.sh 脚本,以确保其生成的密码符合所有要求。
在文本编辑器中保存
genpass.sh文件。在终端中,使用
chmod命令使脚本可执行:chmod +x genpass.sh该命令为文件添加执行权限,使其可以作为程序运行。
使用以下命令运行脚本:
sh genpass.sh脚本应输出一个随机的 12 位密码到控制台。输出应包含至少一个特殊字符、一个数字、一个大写字母和一个小写字母。
## 示例 2Dsxw9+xS:27多次运行脚本。每次运行都应生成不同的密码。这验证了密码生成器中的随机性功能正常工作。
恭喜!你已成功实现并测试了一个符合指定复杂度要求的随机密码生成器。
总结
恭喜!你已经完成了本项目并创建了一个随机密码生成脚本。你现在有了一个基础,可以在未来的脚本项目中继续扩展。 你可以继续在 LabEx 上练习更多实验,以进一步提升你的技能。



