使用正则表达式提高用户密码的复杂度和安全性
来源:互联网 发布:日本历史知乎 编辑:程序博客网 时间:2024/06/06 04:33
大家很多都碰到这样的情况,在注册某些网站的账号时,都要求你的密码不能全是数字或是英文。最典型的就是Apple ID,必须要求是至少有数字、大写字母 和小写字母三种形式;其他比如还有淘宝账号,至少是某几种类型的组合。这从一定程度上使密码变得复杂,同时也变得安全,使别人更难以破解。这种功能的实现一般是使用正则表达式来进行检查,对用户输入进行控制。
具体需求如下:现在要求用户注册时的密码必须是(1)阿拉伯数字;(2)大写英文字母;(3)小写英文字母;(4)标点符号;其中至少两种类型的组合,否则用户注册失败,需要重新输入密码。
通过分析后,写出一下几种类型的正则表达式:
(1)阿拉伯数字:
"[\\p{Digit}]+"注意:+ 加号表示匹配一次或多次,即大于等于一次。上述的正则表达式代表了用户密码输入的全是数字。下同。
(2)大写英文字母:
"[\\p{Upper}]+"(3)小写英文字母:
"[\\p{Lower}]+"(4)标点符号:
"[\\p{Punct}]+"
正则表达式写出后,如何通过业务逻辑去判断用户输入的是否符合要求呢?
解决方案就是从反面进行考虑,如果用户输入的符合上述的其中之一,表示注册失败,否则就是成功。具体的业务逻辑如下:
String regex_number = "[\\p{Digit}]+";// 数字String regex_lower = "[\\p{Lower}]+";// 正则表达式 密码:小写字母String regex_upper = "[\\p{Upper}]+";// 大写字母String regex_char = "[\\p{Punct}]+";// 标点符号String user_password = "用户输入的密码";if (user_password.matches(regex_number)|| user_password.matches(regex_upper)|| user_password.matches(regex_lower)|| user_password.matches(regex_char)) {return "注册失败,密码不符合要求,大写+小写+数字+字符(至少包含2种)";}
如果用户输入的全是数字或者全是大写或者全是小写或者全是标点符号,则该判断为真,返回注册失败信息;如果该判断为假,表示密码符合要求,注册成功。实现了对用户注册时密码复杂度的控制。
2 0
- 使用正则表达式提高用户密码的复杂度和安全性
- 使用 .htaccess 提高 WordPress 的安全性和可用性
- 密码复杂度检查的正则表达式
- 检查密码复杂度的C#正则表达式
- 密码复杂度检查的正则表达式
- 检查密码复杂度的C#正则表达式
- 使用shc提高Shell脚本的安全性
- 正则表达式和grep命令的使用
- 正则表达式的使用和介绍
- JavaScript 正则表达式的规则和使用
- 正则表达式的概述和简单使用
- 提高IIS的安全性
- 加强用户密码保存及检验的安全性
- 更多提高正则表达式效率的方法
- 提高正则表达式效率的方法
- 正则表达式的使用
- 正则表达式的使用:
- 正则表达式的使用
- 泛型指针 auto_ptr
- linux kernel ftrace 之wakeup tracer and wakeup_rt tracer
- mysql常用的一些命令,用于查看数据库、表、字段编码
- linux 磁盘分区,主分区,扩展分区,逻辑分区以sata接口为例
- python报错:IndentationError: unexpected indent
- 使用正则表达式提高用户密码的复杂度和安全性
- 程序员跳槽神级攻略
- Spring查表不报错
- java中的内部类的用法
- Google MapReduce/GFS/BigTable三大技术的中文版
- linux的主分区与逻辑分区的关系
- 自建的C语言可执行程序运行后结果显示窗口不关闭
- javascript获取url各种信息
- 管理Pivotal Gemfire的系统输出文件