`

java 后台密码强度检测

    博客分类:
  • java
阅读更多

 

 

    返回方法一:

package util;
/** 
 * @author 作者姓名
 * @version 创建时间:2015-2-25 下午03:29:40 
 * 类说明 
 */
public class CheckStrong {
	public static Safelevel GetPwdSecurityLevel(String pPasswordStr) {
        Safelevel safelevel = Safelevel.VERY_WEAK;
        if (pPasswordStr == null) {
            return safelevel;
        }
        int grade = 0;
        int index = 0;
        char[] pPsdChars = pPasswordStr.toCharArray();
 
        int numIndex = 0;
        int sLetterIndex = 0;
        int lLetterIndex = 0;
        int symbolIndex = 0;
 
        for (char pPsdChar : pPsdChars) {
            int ascll = pPsdChar;
            /*
             * 数字 48-57 A-Z 65 - 90 a-z 97 - 122 !"#$%&'()*+,-./ (ASCII码:33~47)
             * :;<=>?@ (ASCII码:58~64) [\]^_` (ASCII码:91~96) {|}~
             * (ASCII码:123~126)
             */
            if (ascll >= 48 && ascll <= 57) {
                numIndex++;
            } else if (ascll >= 65 && ascll <= 90) {
                lLetterIndex++;
            } else if (ascll >= 97 && ascll <= 122) {
                sLetterIndex++;
            } else if ((ascll >= 33 && ascll <= 47)
                    || (ascll >= 58 && ascll <= 64)
                    || (ascll >= 91 && ascll <= 96)
                    || (ascll >= 123 && ascll <= 126)) {
                symbolIndex++;
            }
        }
        /*
         * 一、密码长度: 5 分: 小于等于 4 个字符 10 分: 5 到 7 字符 25 分: 大于等于 8 个字符
         */
        if (pPsdChars.length <= 4) {
            index = 5;
        } else if (pPsdChars.length <= 7) {
            index = 10;
        } else {
            index = 25;
        }
        grade += index;
 
        /*
         * 二、字母: 0 分: 没有字母 10 分: 全都是小(大)写字母 20 分: 大小写混合字母
         */
        if (lLetterIndex == 0 && sLetterIndex == 0) {
            index = 0;
        } else if (lLetterIndex != 0 && sLetterIndex != 0) {
            index = 20;
        } else {
            index = 10;
        }
        grade += index;
        /*
         * 三、数字: 0 分: 没有数字 10 分: 1 个数字 20 分: 大于 1 个数字
         */
        if (numIndex == 0) {
            index = 0;
        } else if (numIndex == 1) {
            index = 10;
        } else {
            index = 20;
        }
        grade += index;
 
        /*
         * 四、符号: 0 分: 没有符号 10 分: 1 个符号 25 分: 大于 1 个符号
         */
        if (symbolIndex == 0) {
            index = 0;
        } else if (symbolIndex == 1) {
            index = 10;
        } else {
            index = 25;
        }
        grade += index;
        /*
         * 五、奖励: 2 分: 字母和数字 3 分: 字母、数字和符号 5 分: 大小写字母、数字和符号
         */
        if ((sLetterIndex != 0 || lLetterIndex != 0) && numIndex != 0) {
            index = 2;
        } else if ((sLetterIndex != 0 || lLetterIndex != 0) && numIndex != 0
                && symbolIndex != 0) {
            index = 3;
        } else if (sLetterIndex != 0 && lLetterIndex != 0 && numIndex != 0
                && symbolIndex != 0) {
            index = 5;
        }
        grade += index;
         
        /*
         * 最后的评分标准: >= 90: 非常安全 >= 80: 安全(Secure) >= 70: 非常强 >= 60: 强(Strong) >=
         * 50: 一般(Average) >= 25: 弱(Weak) >= 0: 非常弱
         */    
        if(grade >=90){
            safelevel = Safelevel.VERY_SECURE;
        }else if(grade >= 80){
            safelevel = Safelevel.SECURE;
        }else if(grade >= 70){
            safelevel = Safelevel.VERY_STRONG;
        }else if(grade >= 60){
            safelevel = Safelevel.STRONG;
        }else if(grade >= 50){
            safelevel = Safelevel.AVERAGE;
        }else if(grade >= 25){
            safelevel = Safelevel.WEAK;
        }else if(grade >= 0){
            safelevel = Safelevel.VERY_WEAK;
        }
        return safelevel;
    }
     
    public enum Safelevel {
        VERY_WEAK, /* 非常弱 */
        WEAK, /* 弱 */
        AVERAGE, /* 一般 */
        STRONG, /* 强 */
        VERY_STRONG, /* 非常强 */
        SECURE, /* 安全 */
        VERY_SECURE /* 非常安全 */
    }
    
    public static void main(String[] args) {
    	Safelevel safelevel = GetPwdSecurityLevel("ssssss");
    	System.out.println(safelevel);
	}
}

 

   返回方法二:

   

package util;
/** 
 * @author 作者姓名
 * @version 创建时间:2015-2-25 下午03:29:40 
 * 类说明 
 */
public class CheckStrong {
	static final String VERY_WEAK="非常弱";
	static final String WEAK="弱";
	static final String AVERAGE=" 一般";
	static final String STRONG="强";
	static final String VERY_STRONG="非常强";
	static final String SECURE="安全";
	static final String VERY_SECURE="非常安全";
	
	public static String GetPwdSecurityLevel(String pPasswordStr) {
        String safelevel = VERY_WEAK;
        if (pPasswordStr == null) {
            return safelevel;
        }
        int grade = 0;
        int index = 0;
        char[] pPsdChars = pPasswordStr.toCharArray();
 
        int numIndex = 0;
        int sLetterIndex = 0;
        int lLetterIndex = 0;
        int symbolIndex = 0;
 
        for (char pPsdChar : pPsdChars) {
            int ascll = pPsdChar;
            /*
             * 数字 48-57 A-Z 65 - 90 a-z 97 - 122 !"#$%&'()*+,-./ (ASCII码:33~47)
             * :;<=>?@ (ASCII码:58~64) [\]^_` (ASCII码:91~96) {|}~
             * (ASCII码:123~126)
             */
            if (ascll >= 48 && ascll <= 57) {
                numIndex++;
            } else if (ascll >= 65 && ascll <= 90) {
                lLetterIndex++;
            } else if (ascll >= 97 && ascll <= 122) {
                sLetterIndex++;
            } else if ((ascll >= 33 && ascll <= 47)
                    || (ascll >= 58 && ascll <= 64)
                    || (ascll >= 91 && ascll <= 96)
                    || (ascll >= 123 && ascll <= 126)) {
                symbolIndex++;
            }
        }
        /*
         * 一、密码长度: 5 分: 小于等于 4 个字符 10 分: 5 到 7 字符 25 分: 大于等于 8 个字符
         */
        if (pPsdChars.length <= 4) {
            index = 5;
        } else if (pPsdChars.length <= 7) {
            index = 10;
        } else {
            index = 25;
        }
        grade += index;
 
        /*
         * 二、字母: 0 分: 没有字母 10 分: 全都是小(大)写字母 20 分: 大小写混合字母
         */
        if (lLetterIndex == 0 && sLetterIndex == 0) {
            index = 0;
        } else if (lLetterIndex != 0 && sLetterIndex != 0) {
            index = 20;
        } else {
            index = 10;
        }
        grade += index;
        /*
         * 三、数字: 0 分: 没有数字 10 分: 1 个数字 20 分: 大于 1 个数字
         */
        if (numIndex == 0) {
            index = 0;
        } else if (numIndex == 1) {
            index = 10;
        } else {
            index = 20;
        }
        grade += index;
 
        /*
         * 四、符号: 0 分: 没有符号 10 分: 1 个符号 25 分: 大于 1 个符号
         */
        if (symbolIndex == 0) {
            index = 0;
        } else if (symbolIndex == 1) {
            index = 10;
        } else {
            index = 25;
        }
        grade += index;
        /*
         * 五、奖励: 2 分: 字母和数字 3 分: 字母、数字和符号 5 分: 大小写字母、数字和符号
         */
        if ((sLetterIndex != 0 || lLetterIndex != 0) && numIndex != 0) {
            index = 2;
        } else if ((sLetterIndex != 0 || lLetterIndex != 0) && numIndex != 0
                && symbolIndex != 0) {
            index = 3;
        } else if (sLetterIndex != 0 && lLetterIndex != 0 && numIndex != 0
                && symbolIndex != 0) {
            index = 5;
        }
        grade += index;
         
        /*
         * 最后的评分标准: >= 90: 非常安全 >= 80: 安全(Secure) >= 70: 非常强 >= 60: 强(Strong) >=
         * 50: 一般(Average) >= 25: 弱(Weak) >= 0: 非常弱
         */    
        if(grade >=90){
            safelevel = VERY_SECURE;
        }else if(grade >= 80){
            safelevel = SECURE;
        }else if(grade >= 70){
            safelevel = VERY_STRONG;
        }else if(grade >= 60){
            safelevel = STRONG;
        }else if(grade >= 50){
            safelevel = AVERAGE;
        }else if(grade >= 25){
            safelevel = WEAK;
        }else if(grade >= 0){
            safelevel = VERY_WEAK;
        }
        return safelevel;
    }
    
    public static void main(String[] args) {
    	String safelevel = GetPwdSecurityLevel("WERxxeeEerre34343_2322E3E45r$%&&");
    	System.out.println(safelevel);
	}
}

 

  

 

 

分享到:
评论

相关推荐

    正则表达式判断密码强度

    因此,还需要额外的策略,如使用密码强度检测库,或者结合黑名单策略来避免这些常见弱密码。 在Web应用开发中,例如"WebApplication2"这样的项目,可以利用前端验证(如JavaScript)和后端验证(如服务器端语言如...

    java实现简易社团管理系统.zip

    4. 密码管理功能:为了保障用户账户的安全,系统应该有安全的密码策略,包括密码强度检测、密码修改和找回等功能。这可能涉及到加密算法,如MD5或SHA,以及用户认证机制。 5. Java技术:作为后台开发语言,Java以其...

    Java安全与质量编码规范

    + 密码具有足够的强度:口令长度至少 8 位且应由数字、字母(区分大小写)和特殊字符组成。 + 密码定期更新:应定期提示用户更换口令。 + 密码分级使用:安全等级不同的系统间,同一个体的账户不应使用相同的口令...

    Web 2.0 Login后台登陆html模板-后台 登陆 login.rar

    5. **表单验证**:登录页面通常包含用户名和密码输入框,为了保证数据的准确性和安全性,模板可能会集成简单的表单验证功能,如非空检查、密码强度检测等,这可以通过JavaScript进行实现。 6. **安全考虑**:登录...

    JSP ATM机管理系统

    在JSP页面上,需要设置密码强度检测和确认密码一致性的校验,同时在后台实现密码加密存储,防止数据泄露。 系统的后台管理功能则是管理员用来维护用户信息、设置权限、处理异常交易等。管理员可以通过专门的JSP管理...

    JSP+JavaBean+Servlet技术实现某网站用户注册和登录功能( 源码打包)

    2. 提交的请求被Servlet捕获,Servlet调用JavaBean的方法,对用户输入的数据进行合法性检查,如非空验证、密码强度检测等。 3. 如果验证通过,JavaBean将用户信息保存到数据库或其他持久化存储中。 4. Servlet将处理...

    酒店客房管理系统

    密码修改功能通常会结合密码强度检测,确保用户设置的密码具有一定的复杂度,增加账户的安全性。 三、用户注册与删除 用户注册需提供必要的个人信息,如姓名、联系方式等,并设置登录密码。系统会进行数据校验,...

    ssh众筹管理系统

    - 系统应有密码强度检测,确保用户的密码安全性。 3. **添加项目**: - 项目创建者能提交项目提案,包括项目简介、目标金额、众筹期限、回报设置等,需通过后台审核后发布。 - 系统需对输入内容进行合法性检查,...

    酷炫登录界面

    同时,使用jQuery可以实现表单验证,如非空检查、密码强度检测等,提高数据安全性。 在交互设计上,登录界面往往还包括错误提示和成功反馈。当用户输入无效信息时,可以使用jQuery实时检测并显示错误信息,如红色的...

    jsp+javascript+servlet用户登录和注册,发帖

    在用户登录和注册场景中,JavaScript可以用于前端验证,如检查输入是否为空、格式是否正确,甚至可以实现简单的密码强度检测,防止用户提交无效或不安全的数据。同时,JavaScript也可以用来实现异步提交,比如AJAX,...

    javaweb传智书城项目设计与开发

    用户注册时,前端界面会进行必要的数据校验,如邮箱格式检查、密码强度检测等。登录过程则涉及到session或cookie的使用,来跟踪用户的登录状态。 基本信息的增删改查功能,通常基于MVC(Model-View-Controller)...

    我的智囊团ssh架构pdf

    在《我的智囊团(SSH)_02_开发用户注册功能.pdf》和《我的智囊团(SSH)_03_开发用户登录功能.pdf》中,详细阐述了用户模块的实现,包括用户注册时的信息验证,如邮箱格式检查、密码强度检测等,以及登录时的身份...

    网上书店源程序

    - 账户安全:系统应有防止恶意攻击和数据泄露的安全机制,如二次验证、密码强度检测等。 2. 图书库存管理: - 数据库设计:书籍信息存储在数据库中,包括书名、作者、出版社、ISBN、库存数量等。 - 分类与搜索:...

    Ajax经典实例及源程序

    1. **表单验证**:在用户填写表单时,无需提交就能实时验证输入的有效性,如邮箱格式检查、密码强度检测等。 2. **动态加载内容**:页面的部分区域(如新闻滚动、推荐商品)在用户不刷新页面的情况下更新内容。 3. *...

    ECommerceProject:在线购物网站

    可能包括邮箱验证、密码强度检测等功能,以确保用户账户的安全。用户还可以对自己的信息进行修改,如密码重置、收货地址管理等。 ### 6. 商品管理 后台管理系统应包含商品上传、分类管理、库存控制等功能。商家...

    基于Springboot的农家乐管理平台的设计与实现论文

    针对传统农家乐信息管理中存在的诸多问题,如信息管理混乱、错误率高、安全性不足、劳动强度大以及耗时费力等,本文旨在设计并实现一个基于Spring Boot框架的数字化农家乐管理平台。该平台利用Java语言在Eclipse开发...

    2019移动互联A卷林丰波.docx

    - **Direct 环境光线传感器**:检测环境光线强度,自动调节屏幕亮度; - **Smali**:一种用于 Android Dalvik 字节码的汇编语言,常用于反编译 APK 文件; - **Intent**:用于启动 Activity 或 Service,传递数据的...

    PrimeFaces学习教程

    - **Password Strength** - 密码强度指示器。 - **inputMask** - 输入掩码,用于格式化输入。 - **InputText** - 单行文本输入框。 - **InputTextarea** - 多行文本输入框。 - **Watermark** - 输入框中的提示...

Global site tag (gtag.js) - Google Analytics