设为首页 收藏本站
查看: 1498|回复: 0

[经验分享] 用Perl生成随机密码

[复制链接]

尚未签到

发表于 2017-5-17 11:52:50 | 显示全部楼层 |阅读模式
  如果你是一名系统管理员或者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()方法。
  用这两个模块中的任何一个都可以提高你网络系统的安全性……那么你还等什么呢?

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-378511-1-1.html 上篇帖子: perl学习心得(摘记) 下篇帖子: perl学习,第一个程序
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表