茫茫沧海

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

项目需要为用户提供一个登录账号初始化的功能,这就要求一个产生随机密码的类,这看似简单,但需要做一些限制,比如,密码的长度、复杂度,是否包含数字、大写字母、小写字母、符号等等。同事搜索了一下在网上直接dowm下了一个类。他整理出来代码如下:

Code

一看,挺复杂,而且好像也具备了必要的灵活性,我觉得还不错,也就没有仔细阅读理解代码了。但一运行才发现问题,“De147353”、“bpde2765”、“XNGGXMX3”、“RXVNA368”,里面包含的大写字母、小写字母和数字,同一类型的都是一起产生,感觉这个随机性有点莫名其妙。
最好,还是调整思路,自己写了一个,虽说并不完善,但能很好的满足自己的需要,也有一定灵活性。思路是这样的,先创建四个个字段,分别保存数字字符、大写字母、小写字母、符号,再创建一个保存全部字符,同样还有一个最重要的是保存密码长度。提供多种构造函数,让用户随意定制自己的随机字符串格式,用户可以选择自己需要的字符,也可以使用系统默认的,并且可以设置产生密码的长度。在类实例化的最后,将字符混合(可以按照一定策略),并填充到另一字段。在用户获取随机字符串时,根据要求的随机字符长度,随机的挑出所有字符中的部分。一般一个实例只允许产生一种规格的密码,但我也提供了一个函数,用于补充字符,稍微改变规格。


Code
posted on 2008-03-21 00:12  varmc  阅读(819)  评论(0编辑  收藏  举报