检测密码强度工具类

package com.lxm.tools;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CheckPWD {

	public static Safelevel checkPasswordStrength(String c) {
		Safelevel d = Safelevel.WEAK;
		if (isEmptyPassword(c)) {
			return d;
		}
		if (isTooShort(c)) {
			d = Safelevel.WEAK;
		} else {
			if (hasNum(c) && hasLetter(c) && hasSymbol(c)) {
				d = Safelevel.SECURE;
			} else {
				if (hasNum(c) && hasLetter(c)) {
					d = Safelevel.STRONG;
				} else {
					if (hasNum(c) && hasSymbol(c)) {
						d = Safelevel.STRONG;
					} else {
						if (hasSymbol(c) && hasLetter(c)) {
							d = Safelevel.STRONG;
						} else {
							if (isAllNum(c) || isAllLetter(c) || isAllSymbol(c)) {
								d = Safelevel.WEAK;
							}
						}
					}
				}
			}
		}
		return d;
	}

	public enum Safelevel {

		WEAK, /* 弱 */

		STRONG, /* 强 */

		SECURE, /* 安全 */

	}

	public static boolean hasNum(String content) {
		boolean flag = false;
		Pattern p = Pattern.compile(".*\\d+.*");
		Matcher m = p.matcher(content);
		if (m.matches())
			flag = true;
		return flag;

	}

	public static boolean hasSymbol(String content) {
		boolean flag = false;
		Pattern p = Pattern.compile(".*[a-zA-Z0-9\\s<>;'\\\\]+.*");
		Matcher m = p.matcher(content);
		if (m.matches())
			flag = true;
		return flag;

	}

	public static boolean isAllSymbol(String content) {
		boolean flag = false;
		Pattern p = Pattern.compile("^[a-zA-Z0-9\\s<>;'\\\\]+$");
		Matcher m = p.matcher(content);
		if (m.matches())
			flag = true;
		return flag;

	}

	public static boolean hasSpace(String content) {
		boolean flag = false;
		Pattern p = Pattern.compile(".*\\s+.*");
		Matcher m = p.matcher(content);
		if (m.matches())
			flag = true;
		return flag;

	}

	public static boolean hasIllegalSymbol(String content) {
		boolean flag = false;
		Pattern p = Pattern.compile(".*[\\s<>;'\\\\].*");
		Matcher m = p.matcher(content);
		if (m.matches())
			flag = true;
		return flag;

	}

	public static boolean hasLetter(String content) {
		boolean flag = false;
		Pattern p = Pattern.compile(".*[a-zA-Z]+.*");
		Matcher m = p.matcher(content);
		if (m.matches())
			flag = true;
		return flag;

	}

	public static boolean isAllLetter(String content) {
		boolean flag = false;
		Pattern p = Pattern.compile("^[a-zA-Z]+$");
		Matcher m = p.matcher(content);
		if (m.matches())
			flag = true;
		return flag;

	}

	private static boolean isEmptyPassword(String b) {
		return (b == null || b.length() == 0);
	}

	private static boolean isTooShort(String b) {
		return b.length() < 6;
	}

	public static boolean isAllNum(String content) {
		boolean flag = false;
		Pattern p = Pattern.compile("^\\d+$");
		Matcher m = p.matcher(content);
		if (m.matches())
			flag = true;
		return flag;

	}

	public static boolean hasRepeat6Chars(String content) {

		boolean flag = false;
		Pattern p = Pattern.compile(".*([0-9a-zA-Z])\\1{5}.*");
		Matcher m = p.matcher(content);
		if (m.matches())
			flag = true;
		return flag;

	}

	public static boolean hasIncrease6Chars(String g) {

		if (g == null || g.length() < 6) {
			return false;
		}
		char h = g.charAt(0);
		char i = 1;
		char j = 1;
		for (j = 1; j < g.length(); j++) {
			char f = g.charAt(j);
			if (f == h + 1) {
				i++;
				if (i >= 6) {
					return true;
				}
			} else {
				i = 1;
			}
			h = f;
		}
		return false;

	}

	public static boolean hasDecrease6Chars(String g) {

		if (g == null || g.length() < 6) {
			return false;
		}
		char h = g.charAt(0);
		char i = 1;
		char j = 1;
		for (j = 1; j < g.length(); j++) {
			char f = g.charAt(j);
			if (f == h - 1) {
				i++;
				if (i >= 6) {
					return true;
				}
			} else {
				i = 1;
			}
			h = f;
		}
		return false;

	}

	public static boolean hasAllIncreaseChars(String g) {

		if (g == null) {
			return false;
		}
		int i = g.length();
		char h = g.charAt(0);
		char j = 1;
		char k = 1;
		for (k = 1; k < g.length(); k++) {
			char l = g.charAt(k);
			if (l == h + 1) {
				j++;
				if (j >= i) {
					return true;
				}
			} else {
				j = 1;
			}
			h = l;
		}
		return false;

	}

	public static boolean hasAllDecreaseChars(String g) {
		if (g == null) {
			return false;
		}
		int i = g.length();
		char h = g.charAt(0);
		char j = 1;
		char k = 1;
		for (k = 1; k < i; k++) {
			char l = g.charAt(k);
			if (l == h - 1) {
				j++;
				if (j >= i) {
					return true;
				}
			} else {
				j = 1;
			}
			h = l;
		}
		return false;

	}

	public static boolean isAllSameChars(String content) {

		if (content == null || content.length() < 2) {
			return false;
		}
		char h = content.charAt(0);
		char e = 1;
		for (e = 1; e < content.length(); e++) {
			char f = content.charAt(e);
			if (f != h) {
				return false;
			}
		}
		return true;

	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员入门进阶(免费辅导开题报告)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值