`
tony_413
  • 浏览: 17494 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用Perl生成随机密码

阅读更多

如果你是一名系统管理员或者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()函数接受两个自变量:密码长度的上限和下限。下面就是输出结果的一个例子:

ijantyoph

提示:通过调用letters()方法你可以生成一个含有一串随机字母字符的密码,而不需要使用words()方法。

用这两个模块中的任何一个都可以提高你网络系统的安全性……那么你还等什么呢?

分享到:
评论

相关推荐

    使用Perl生成随机密码

    本篇文章将详细介绍如何使用Perl编写脚本来生成随机密码,并且允许通过参数来定制密码的组成元素,如小写字母、大写字母、数字和特殊符号。 首先,Perl脚本通常会包含`use strict`和`use warnings`这两行,它们分别...

    bioinforamtics perl resources

    主要内容涵盖了序列拼接、转录、反向互补序列生成、从文件读取序列数据、在DNA或蛋白质中搜索基序等实用技能,并介绍了子程序的使用、突变与随机化处理、翻译DNA为蛋白质以及使用Perl模块(如BioPerl)等高级主题。...

    生物信息学编程用书perl

    - **7.2 使用随机化的程序**:展示一个利用随机数生成器的示例程序。 - **7.3 模拟DNA突变**:介绍如何使用Perl模拟DNA序列中的突变事件。 - **7.4 生成随机DNA序列**:给出生成随机DNA序列的算法。 - **7.5 ...

    Beginning Perl for Bioinformatics

    Perl提供了生成随机数的内置函数,如`rand`和`srand`,可用于创建随机DNA序列和模拟突变过程。通过对随机化程序的分析,读者可以更好地理解统计学原理和遗传学理论。 ### 基因密码与数据结构 最后,本书探讨了基因...

    beginning perl for bioinformatics

    书中提供了具体的示例程序,演示了如何在Perl中使用随机数生成器。此外,还讲解了如何构建和分析遗传密码,使用哈希表(hashes)来表示复杂的生物数据结构,以及如何设计和优化算法来处理遗传信息。 通过系统学习...

    生物信息学相关的perl书籍

    ### 生物信息学相关的Perl书籍知识点总结 #### 一、书籍基本信息 ...通过以上内容可以看出,《Perl for Bioinformatics》是一本非常实用且针对性强的生物信息学工具书,适合所有对生物信息学感兴趣的读者学习使用。

    perl-Acme-CPANModules-ListsOfWordsAndNames:(没有说明)

    Perl Acme::CPANModules::ListsOfWordsAndNames 是一个Perl模块,它提供了一系列的单词和名字列表,可能用于各种编程任务,如测试、数据填充或者生成随机字符串。这个模块是Perl Comprehensive Archive Network ...

    csprng:密码学伪随机数生成器

    使用分组密码 使用流密码 使用哈希函数 每种算法将以多种语言实现。 首先,我熟悉Python和JavaScript,因此将首先实现它们。 其他语言。 什么 每个CSPRNG均以十进制或原始二进制形式打印随机数。 范围取决于密码...

    网页加密软件(HTML Password Lock) v5.4.zip

    - 生成随机密码,随机用户名/密码系列。 - 支持密码保护HTML,ASP页面和PHP的页面。 - 兼容各种网络托管服务器和html编辑器。兼容所有现代的Web浏览器,不需要额外的浏览器扩展。 - 支持各种托管服务器,没有CGI...

    bioperl-加批注

    - **遗传密码的解析**:使用Perl的哈希(hash)结构来存储和查找遗传密码表。 - **数据结构与算法**:理解如何高效地存储和处理生物数据对于进行复杂的计算至关重要。 #### 结论 本书《Perl for Bioinformatics》由...

    MySQL初级DBA实战

    - **查看随机密码**:通常可以在日志文件中查看MySQL自动生成的临时root密码。 - **连接MySQL服务器**:使用`mysql -u root`命令连接MySQL服务器。 - **修改密码**:使用`ALTER USER 'root'@'localhost' IDENTIFIED ...

    CentOS7.x离线安装Mysql5.7.pdf

    - MySQL 5.7版本在安装完成后,root用户的密码由系统随机生成,这个密码会记录在日志文件`mysqld.log`中,可以通过查看这个日志文件来获取root用户的随机密码。 #### 第五步:修改root登录密码 1. **登录MySQL...

    Crypt-OpenSSL-Random-0.11.tar.gz

    综上所述,这个Crypt-OpenSSL-Random Perl模块提供了使用OpenSSL库进行安全随机数生成的功能,版本0.11可能包含一些优化和改进。开发人员可以利用这个模块在Perl应用程序中实现更安全的加密操作。

    bioinformatics

    5. **遗传密码**:讨论Perl中哈希表的使用,以及如何构建和操作复杂的数据结构,例如遗传密码表。 通过这些章节的学习,读者不仅能掌握Perl的基础语法,还将学会编写实用的生物信息学脚本,解决实际科研中的问题。 ...

    mini化centos安装mysql步骤和相关rpm

    首次安装后,MySQL会生成一个随机密码。查看此密码的方法是: ```bash sudo grep 'temporary password' /var/log/mysqld.log ``` 记下这个临时密码,然后用它登录MySQL并更改默认密码: ```bash mysql -u root -p...

    gpgpwd:移至GitLab

    1. **password-generator**:表明gpgpwd是一个密码生成器,可以帮助用户创建强而复杂的随机密码,提高在线账户的安全性。 2. **password-manager**:它也可能是一个密码管理器,能够存储和管理用户的账号和密码,...

    本人根据RC4加密解密算法原理自己实现的RC4加密解密程序_RC4加密解密_信息安全_加密解密_密码学

    KSA用密钥重新排列S盒,PRGA则生成伪随机序列用于加密明文。 2. **C语言实现**: C语言版本的RC4程序通常利用结构体存储S盒,并通过函数实现KSA和PRGA。在加密和解密过程中,C语言的指针操作能有效提高效率。 3. ...

    MySql安装.docx

    MySQL 5.7开始使用随机生成的临时密码。要找到这个临时密码,你需要查看日志文件: 6. `grep "password" /var/log/mysqld.log` 在这里,你需要查找日志中类似`c!)fa/Cd9kD`的字符串,这是临时密码。使用这个密码...

Global site tag (gtag.js) - Google Analytics