用Perl生成随机密码(转)

用Perl生成随机密码

『 更新时间:2008-4-6 』『 字体: 变小 变大 』『 作者:佚名 | 来源: 互联网

如果你是一名系统管理员或者Web开发人员,你可能已经知道强度不够的用户密码是最大网络安全风险之一。强度不够的密码——比如,使用用户的名字或者生日作密码——通常都可以利用复杂的用户嗅探工具“破解”,这样未经授权的用户就可以很容易地从后门进入服务器。这就是为什么很多管理员都会定期检查用户密码,以确保它们的安全性足以抵御住一次进攻。根据所需要的安全级别,有一些管理员甚至会对密码进行进一步的处理:他们会自己生成并指定用户密码。

但是,自动地生成用户密码有些棘手——密码必须足够简单,容易记住,但是又不能太简单,否则就很容易被破解。Internet上有很多算法可以用来帮助你生成一个安全的、可以拼读的密码;然而,如果你交工的最终期限即将到来,或者你没有多少开发经验,你并不是总是能够实现这些解决方案。

但是,现在就有一个解决方案。CPAN有很多自动生成密码的模块,能够让你轻松地在应用程序里加入这项功能。这些模块都是很先进的工具——你可以自定义密码的长度、允许输入的字符、最终密码的“可拼读性”,以及其他属性。这类模块中有两个很有意思,我们下面就要讨论它们。

The String::MkPasswd模块

String::MkPasswd模块提供了一个简单的API,用来随机生成不可拼读的密码。要在Perl里使用它,就要进行下面这些步骤:

1. 安装这个模块

安装String::MkPasswd的最简单方法是使用CPAN命令解释器,输入下面的命令:

shell> perl -MCPAN -e shell
cpan> install String::MkPasswd

如果使用CPAN命令解释器,那么相关性就会被自动下载。

或者,你可以下载这个模块。一旦把下载文档里的文件解压到临时目录里,你就要运行下面这些命令:

shell> perl Makefile.PL
shell> make
shell> make install

如果Perl发现有相关性丢失,它会中断这一过程,并显示错误;那么你就应该安装丢失的文件并重试。如果所需要的文件都有了,那么上面的命令就会被编译,并把这个模块安装到你的Perl模块目录下。

2. 确定密码的属性

在编写代码之前,你必须确定密码的一些重要属性。String::MkPasswd让你可以控制:

  • 密码的长度;
  • 数字的数量;
  • 大写和小写字符的数量;
  • 特殊标点符号的数量;

在大多数情况下,你希望密码有8到15个字符长,而且希望一般的字符中间还包含相当的数字和特殊字符。要记住的是,密码越随机,它就越难被破解!

3. 生成密码

一旦确定密码需要是什么样的,你就可以调用String::MkPasswd模块的mkpasswd()函数来生成密码,见列表A

列表A

#!/bin/perl

# import module
use String::MkPasswdqw(mkpasswd);

# print custom password
print mkpasswd(-length => 13, -minnum => 4, -minlower => 4, -minupper => 2, -minspecial => 3);

在本文里,所生成的密码有13个字符长,其中包括4个数字、4个小写字符、2个大写字符和3个标点。下面就是一个输出的例子:

w)d9V;7kz64&Y

每次调用mkpasswd()的时侯,你会得到一个不同的结果。所以,如果有大量的密码要生成,你可以就把对mkpasswd()的调用放到一个循环里,并处理每次运行的结果。

提示:如果这看起来太麻烦,你还可以不使用任何参数就调用mkpasswd()生成一个默认的9位数的密码。

Crypt::RandPasswd模块

String::MkPasswd模块可以生成很安全但是非常难以记住的密码。如果你更希望生成可以拼读和容易记忆的密码,那就考虑Crypt::RandPasswd模块吧。这个模块是自动密码生成器(Automated Password Generator)的一个实现,你可以用下面的步骤来使用它:

1. 安装这个模块

你可以用CPAN命令解释器来安装Crypt::RandPasswd,就像下面这样:

shell> perl -MCPAN -e shell
cpan> install Crypt::RandPasswd

或者,可以下载这个模块,并用下面的命令来安装它:

shell> perl Makefile.PL
shell> make
shell> make install

2. 生成密码

Crypt::RandPasswd模块带有一个word()函数,用来生成可拼读的随机密码。列表B是如何使用它的例子。

列表B

#!/bin/perl

# use module
use Crypt::RandPasswd;

# generate password
$word = Crypt::RandPasswd->word(5, 10);
print $word;

word()函数接受两个自变量:密码长度的上限和下限。下面就是输出结果的一个例子:

### 解决PyCharm无法加载Conda虚拟环境的方法 #### 配置设置 为了使 PyCharm 能够成功识别并使用 Conda 创建的虚拟环境,需确保 Anaconda 的路径已正确添加至系统的环境变量中[^1]。这一步骤至关重要,因为只有当 Python 解释器及其关联工具被加入 PATH 后,IDE 才能顺利找到它们。 对于 Windows 用户而言,在安装 Anaconda 时,默认情况下会询问是否将它添加到系统路径里;如果当时选择了否,则现在应该手动完成此操作。具体做法是在“高级系统设置”的“环境变量”选项内编辑 `Path` 变量,追加 Anaconda 安装目录下的 Scripts 文件夹位置。 另外,建议每次新建项目前都通过命令行先激活目标 conda env: ```bash conda activate myenvname ``` 接着再启动 IDE 进入工作区,这样有助于减少兼容性方面的问题发生概率。 #### 常见错误及修复方法 ##### 错误一:未发现任何解释器 症状表现为打开 PyCharm 新建工程向导页面找不到由 Conda 构建出来的 interpreter 列表项。此时应前往 Preferences/Settings -> Project:...->Python Interpreter 下方点击齿轮图标选择 Add...按钮来指定自定义的位置。按照提示浏览定位到对应版本 python.exe 的绝对地址即可解决问题。 ##### 错误二:权限不足导致 DLL 加载失败 有时即使指定了正确的解释器路径,仍可能遇到由于缺乏适当的操作系统级许可而引发的功能缺失现象。特别是涉及到调用某些特定类型的动态链接库 (Dynamic Link Library, .dll) 时尤为明显。因此拥有管理员身份执行相关动作显得尤为重要——无论是从终端还是图形界面触发创建新 venv 流程均如此处理能够有效规避此类隐患。 ##### 错误三:网络连接异常引起依赖下载超时 部分开发者反馈过因网速慢或者其他因素造成 pip install 操作中途断开进而影响整个项目的初始化进度条卡住的情况。对此可尝试调整镜像源加速获取速度或是离线模式预先准备好所需资源包后再继续后续步骤。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值