在 MySQL 中依据规则生成随机密码

在 MySQL 中依据规则生成随机密码

在 MySQL 中根据规则生成随机密码

转自:http://my.oschina.net/bairrfhoinn/blog/70728?from=20120805,感谢大神无私分享。特此收藏

?

?

在 MySQL 中根据规则生成随机密码

MySQL 5.0 以后的版本开始支持存储过程,存储过程具有壹致性、高效性和安全性。MySQL 5.0 之前的版本并不支持存储过程,然而随着 MySQL 技术的日趋完善,存储过程将在以后的项目中得到广泛的应用。

在我的应用中,我需要在用户首次注册时为该帐号生成一个随机密码。所生成的密码必须满足一定的要求,这些要求由系统管理员进行配置。

我们提供了下面几个对密码的要求规则,这些规则可组合使用:

1- 要求大写字母
UPPERCASE =====> 缩写 [U]

2- 要求小写字母
LOWERCASE =====> 缩写 [L]

3- 要求使用数字
NUMBER =====> 缩写 [N]

4- 可以是任意字符
ANY_CHARACTER
======> 缩写 [A]

5- 必须有非字母和数字的字符 NON_ALPHANUMERIC_CHARACTER =====> 缩写 [S]

因此我想通过创建一个动态函数 “RANDOM_PASSWORD” 来根据要求返回随机的密码。

系统管理员只需要传递所需密码的规则就会返回对应的随机密码。

例如要求如下:

首字符必须大写 ======> U

第二个字符必须小写 ======> L

第三个字符必须是数字 ======>N

第四个字符随意 ======>A

第五个字符必须是非字母和数字 ======>S

第六个字符必须是数字 ======> N

那么你可以使用
“ULNASN” 参数来获取随机密码。

所生成的密码程度跟传递的参数长度是一致的。在我们这个例子中生成的密码长度是 6。

你可以使用下面的方法来调用这个函数:

view sourceprint?

1 RANDOM_PASSWORD('ULNASN')

在MySQL的控制台编写函数定义前,先要将数据库中可能已经存在的此函数定义删除,然后须将分隔符更改为$,其实我本想将分隔符改成#,后来发现没有成功,不知道是为什么,在命令行下删除 RANDOM_PASSWORD() 函数的定义与更改分隔符使用如下命令:

view sourceprint?

1 mysql> DROP FUNCTION IF EXISTS RANDOM_PASSWORD;
2 mysql> delimiter $

接下来可以编写该函数,经过我调试通过的源代码如下:

view sourceprint?

01 CREATE FUNCTION RANDOM_PASSWORD (str VARCHAR(255))
02 RETURNS VARCHAR(255)
03 BEGIN
04 DECLARE UPPER_CASE VARCHAR(26) DEFAULT 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
05

免责声明: 本文仅代表作者个人观点,与无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。

相关资料

推荐阅读

友情链接:
Copyright © 2013-2023 页 当前在线:1087人  网站在21时40分55秒内访问总人数:265064人 当前 11.67%  

在 MySQL 中依据规则生成随机密码

相关文章:

你感兴趣的文章:

标签云: