为了提高密码的复杂性和安全性,应用系统在设置密码的时候,一般都会进行弱密码检测。总体上有两种思路,把弱密码都记录下来,形成弱密码库,设置密码的时候检查是否与弱密码库匹配,这种方法存在两个方面的难点,一个是弱密码库的完整性比较难保证,另一个是弱密码库的数据量可能会很大,所以,建议的方式是采用定义规则的方式。

package com.ftsafe.utils;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class WeakPasswordUtils {public static boolean isWeakPassword(String password) {// 字符长度8 - 16字符// 2个及以上大写字母// 2个及以上小写字母// 1个及以上特殊字符// 3个及以上数字字符// 需要满足的基本规则String baseReg = "^(?=.*[A-Z].*[A-Z])(?=.*[!@#$&*])(?=.*[0-9].*[0-9].*[0-9])(?=.*[a-z].*[a-z]).{8,16}$";boolean matchBaseReg = password.matches(baseReg);// 不满足要求,认为是弱密码if (matchBaseReg == false) {return true;}// 需要满足的特征String pattern1 = "([0-9a-zA-Z])\\1{2}";String pattern2 = "(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){2}";String pattern3 = "(?:9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)|2(?=1)|1(?=0)){2}";boolean weakPassword = isMatchWeakPassword(password, pattern1);if (weakPassword) {return true;}weakPassword = isMatchWeakPassword(password, pattern2);if (weakPassword) {return true;}weakPassword = isMatchWeakPassword(password, pattern3);if (weakPassword) {return true;}return false;}public static boolean isMatchWeakPassword(String password, String patternStr) {// 创建 Pattern 对象Pattern pattern = Pattern.compile(patternStr);// 现在创建 matcher 对象Matcher matcher = pattern.matcher(password);// 找到弱密码特征if (matcher.find()) {return true;} else {return false;}}public static void main(String[] args) {System.out.println(isWeakPassword("$13AA11aa"));System.out.println(isWeakPassword("$1234"));}}

可以通过执行main方法,判断指定的密码是否符合规则。

2. 检测方法

boolean weakPassword = WeakPasswordUtils.isWeakPassword(password);if (weakPassword == true) {return error("当前密码为弱密码,请重新设置安全密码!");
}

java利用正则表达式弱密码检测相关推荐

  1. mysql暴力撞库与弱密码检测

    暴力撞库与弱密码检测 最近在生产数据库上碰到了一个问题,觉得挺有意思,总结出来和大家分享下. 关于暴力撞库和弱密码检测. 相信使用数据库的大家应该都不陌生,暴力撞库,简单通俗的讲通过一堆生成的密码,然 ...

  2. 【Java 解析全国地址】Java 利用正则表达式完美解析全国省市区地址

    Java 利用正则表达式完美解析全国省市区地址 一.问题场景描述 最近在项目中遇到了一个全国地址解析的一个场景,前端会传来一个字符串,后端需自动解析出 xx省xx市xx区+详细地址 的这种格式. 因为 ...

  3. Java利用正则表达式实现中英文日期转换函数封装

    前言:  Java利用正则表达式实现中英文日期互相转换函数封装,一共实现了6个方法(封装的原因是因为在Android中使用SimpleDateFormat 太麻烦了,各种try catch excep ...

  4. 黑客利用SSH弱密码攻击控制Linux服务器,潜在目标约十万IP天

    一.概述 本周腾讯安全服务中心接到客户求助,客户部署的腾讯御界高级威胁检测系统发现SSH服务失陷感知信息,该公司安全管理人员及时联络腾讯安全专家协助分析威胁来源. 腾讯安全工程师在征得客户同意后对客户 ...

  5. linux弱密码检测

    1.安装一个john软件包用来检测弱密码 2.进入桌面可以看到 3.使用mkdir /soft 在/下创建一个soft的文件夹:然后使用mv命令:mv john-1.8.0.tar.xz /soft/ ...

  6. java利用正则表达式提取字符串中的整数和小数部分

    最近开发遇到一个新的东西,就是前端传过来一个字符串,需要将里面的数字提取出来,倒腾了一天,最后还是没有倒腾出来,最后还是借鉴大佬的方法.记录一下. 首先是前端传来的字符串"小明通过扫码向你付 ...

  7. java利用正则表达式分割字符串(不区分中英文标点)

    今天在实际开发中发现了一个bug,由于销售人员的输入不当,有些时间的冒号被他们写成了中文格式,作为一个公司最底层的码农,只能从代码下手解决他们的陋习,具体解决方式如下: String regets = ...

  8. java 特殊符号正则_java利用正则表达式处理特殊字符的方法实例

    前言 一串字符串中有特殊符号,可能会影响到相关接口业务,所以需要把字符串中的特殊字符都过滤掉 百度上面搜索大部分处理方法是通过正则表达式, 他需要处理的特殊符号都写进正则表达式中去校验, 这种方式一眼 ...

  9. 你的密码已泄露!使用C#阻止弱密码

    虽然,我们为了安全考虑,在注册用户时会检查密码规则,避免弱密码,比如百度的注册页面: 但是,现在的黑客也不会傻到用穷举的办法生成密码去攻击网站,更常用的方式是使用已泄露密码生成的字典. 那这些字典从哪 ...

  10. java正则表达式验证密码_java密码验证正则表达式校验

    ,正则表达式就是记录文本规则的代码. php密码验证正则表达式(8位长度限制) //密码验证 $password = "zongzi_Abc_oo13a2"; $n = preg_ ...

最新文章

  1. java编写数字金字塔_用JAVA写数字金字塔
  2. GitHub 为什么有些时候进去特变慢
  3. Cloud for Customer UI toolbar里按钮的渲染逻辑
  4. SSH登录太慢(等很久才提示输入密码)的问题
  5. Python Pandas –数据输入和输出
  6. HTML语言法则主要是什么,prolog语言的三种基本语句是什么?
  7. php正则表达式经典实例,php半小时精通正则表达式
  8. 算法和数据结构(四)
  9. 60-008-026-使用-命令-如何在flink中传递参数
  10. Matrix探究细谈
  11. Gulp快速入门教程 1
  12. python 小技巧之获取固定下面包含的某种类型文件的个数
  13. 使用appendChild巧妙解决火狐下innerHTML无法沿用input数据问题
  14. 自己挖坑自己跳 之JsonMappingException: (was java.lang.NullPointerException) (through reference chain:)...
  15. 如何更电计算机共享名称,电脑网络共享设置
  16. 人工智能项目商业价值,主要体现在哪几个方面?
  17. minicom and kermit
  18. yolomouse怎么用_YoloMouse(游戏鼠标光标修改工具)_YoloMouse(游戏鼠标光标修改工具)官方版下载 - 键盘鼠标 - 绿软家园...
  19. wordpress个人博客申请Let’s Encrypt免费SSL证书
  20. elementUI表格自动刷新

热门文章

  1. 计算机快速录入,如何快速把书中的文字扫描并录入电脑
  2. python爬取微博数据代码_Python selenium爬取微博数据代码实例
  3. linux中fdisk的参数,Linux fdisk命令参数及用法详解---Linux磁盘分区管理命令fdisk
  4. 深度linux 安装qq游戏,在Deepin系统下用Playonlinux完全可以运行QQ游戏大厅
  5. (经典中的经典!)IT学生解惑真经(转),真会有人看完这15万字吗
  6. 泰坦尼克号数据下载链接
  7. 惠普打印机驱动服务器系统安装步骤,Win8.1安装惠普打印机驱动程序的两种方法...
  8. Java读写文件的常用方法
  9. sd u盘 速度测试软件,u盘速度测试(FlashBench)sd卡速度测试
  10. 计算机电脑哪个是复位键,电脑一键还原按哪个键