Haohappy/文
2004-11-01
关于随机密码
系统自动生成随机密码或口令,这是WEB程序常见的功能之一。例如这样的注册模式你一定不会感到陌生:当用户注册时,系统为用户生成一个随机密码并发至其注册邮箱。用户登录自己的邮箱得到系统所给的随机密码后,再登录系统修改为自己想要的密码。这和直接发送密码到用户邮箱相比,避免了用户密码在网络上的明文传输,大大增强了系统安全性。随机密码还常用于“忘记密码”功能,用户忘记密码后,系统可以为之自动再生成一个密码。
/*随机字符串的生成还有一个很酷的应用就是验证码,PEAR中有一个对应的类库Text_CAPTCHA。目前Text_CAPTCHA还只是Alpha版本,所以我们暂不讨论,等到Stable版本释出后我会向大家介绍。Text_CAPTCHA就基于即将介绍的Text_Password开发的。本文中也将会有一个图形验证码的实例,采用Text_Password+GD开发。*/
我们在WEB开发中生成的密码都是由数字,字母和特殊字符组成的。根据不同的组合方式,密码的类型可以大概分成纯数字型,纯字母型,纯特殊字符型,数字字母混合型,数字字母特殊字符混合型等。
PEAR::Text_Password简介
http://pear.php.net/package/Text_Password
今天向大家介绍的PEAR类是PEAR::Text_Password,可以称之为随机密码生成器。PEAR::Text_Password是个比较简单的类,只包含一个PHP文件(Password.php),代码连注释在内只有500多行。Text_Password易学易用,功能却相当强大,可以满足WEB应用中绝大部份情况下的需求(如果你觉得还需要定制一些自己的功能,可以将这个类库再开发,相当方便)。
Text_Password的主要特性如下:
² 可创建多种格式的随机密码,如纯字母,纯数字,纯特殊字符及混用型密码;
² 可自定义密码的长度(字符数);
² 可限定密码中只能出现某些字符;
² 可一次性创建多个密码;
² 创建基于某个字符串的密码(非随机,使用不同算法对字符串进行处理,如翻转)。
Text_Password把密码分为pronounceable(可发音的)和Unpronounceable(不可发音的)两种类型。可发音型即纯英文字母型,虽然整个口令不是正常的英文单词,但一般可以划分出音节来发音,有助于记忆,例如“steagionea”。不可发音型则是混用型,无法发音,如“miC106AIB7”。显然,可发音型容易记忆而安全性相对较差,不可发音型不易记忆但安全性较好。通常情况下我们不太需要记忆随机密码,所以选用Unpronounceable的情况较常见一些。你可以视实际情况选择。
系统需求:
PHP4.3.* /PHP5
PEAR::Text_Password