Android Java判断密码强度 强度显示

这篇具有很好参考价值的文章主要介绍了Android Java判断密码强度 强度显示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

定风波 苏轼(宋)

三月七日,沙湖道中遇雨。雨具先去,同行皆狼狈,余独不觉。已而遂晴,故作此词。

莫听穿林打叶声,何妨吟啸且徐行。竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。

料峭春风吹酒醒,微冷,山头斜照却相迎。回首向来萧瑟处,归去,也无风雨也无晴。

1,正则表达式

密码强度的正则表达式

    public static final String WEAK_PATTERN = "(^(?=.*[0-9])(?=.*[a-z])[0-9a-z]{6,18}$)|(^(?=.*[0-9])(?=.*[A-Z])[0-9A-Z]{6,18}$)";//全数字+字母(大/小)
    public static final String MEDIUM_PATTERN = "((?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{6,18})|((?=.*[0-9])(?=.*[a-z])(?=.*[^\\w\\s]).{6,18})|((?=.*[0-9])(?=.*[A-Z])(?=.*[^\\w\\s]).{6,18})";//数字+字母(大+小)/数字+小+特殊字符/数字+大+特殊字符
    public static final String STRONG_PATTERN = "(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[^\\w\\s]).{6,18}";//数字+字母(大+小)+特殊字符

我们定义密码至少有数字和字母,且最少6位最多18位,按照密码强弱层度分成了弱中强三种情况。

弱:是数字+字母(大/小),此时的字母要么全是大写,要么全是小写

中:数字+字母(大+小)/数字+小+特殊字符/数字+大+特殊字符,情况比较多分为三种情况     :

  1.              数字+字母(大写+小写):此时字母大小写同时存在
  2.             数字+小+特殊字符:数字+小写字母+特殊字符(比如@、¥、*等)的组合
  3.             数字+大+特殊字符:数字+大写字母+特殊字符的组合

强:数字+字母(大+小)+特殊字符,数字+字母大小写同时存在+特殊字符,最强密码

解析正则表达式

WEAK_PATTERN

(                           // 开始第一个正则表达式组
    ^                       // 匹配字符串的开始位置
    (?=.*[0-9])             // 正向先行断言,匹配至少一个数字
    (?=.*[a-z])             // 正向先行断言,匹配至少一个小写字母
    [0-9a-z]{6,18}          // 匹配6-18个数字或小写字母的组合
    $                       // 匹配字符串的结束位置
)                           // 结束第一个正则表达式组
|                           // 或
(                           // 开始第二个正则表达式组
    ^                       // 匹配字符串的开始位置
    (?=.*[0-9])             // 正向先行断言,匹配至少一个数字
    (?=.*[A-Z])             // 正向先行断言,匹配至少一个大写字母
    [0-9A-Z]{6,18}          // 匹配6-18个数字或大写字母的组合
    $                       // 匹配字符串的结束位置
)                           // 结束第二个正则表达式组

该正则表达式包含两个正则表达式组,用 | 进行分隔,表示匹配两种不同的密码格式,分别为:

  • 至少包含一个数字和一个小写字母的6-18位密码;
  • 至少包含一个数字和一个大写字母的6-18位密码。

每个正则表达式组都使用了正向先行断言,确保密码中至少包含指定的字符类型。然后使用字符集 [0-9a-z] 或 [0-9A-Z] 来匹配密码中的数字和字母。最后使用 {6,18} 来限制密码长度在6-18个字符之间,并使用 ^ 和 $ 分别表示匹配字符串的开始和结束位置。

MEDIUM_PATTERN

(                                   // 开始第一个正则表达式组
    (?=.*[0-9])                     // 正向先行断言,匹配至少一个数字
    (?=.*[a-z])                     // 正向先行断言,匹配至少一个小写字母
    (?=.*[A-Z])                     // 正向先行断言,匹配至少一个大写字母
    .{6,18}                         // 匹配6-18个任意字符
)                                   // 结束第一个正则表达式组
|                                   // 或
(                                   // 开始第二个正则表达式组
    (?=.*[0-9])                     // 正向先行断言,匹配至少一个数字
    (?=.*[a-z])                     // 正向先行断言,匹配至少一个小写字母
    (?=.*[^\w\s])                   // 正向先行断言,匹配至少一个非单词字符和非空白字符
    .{6,18}                         // 匹配6-18个任意字符
)                                   // 结束第二个正则表达式组
|                                   // 或
(                                   // 开始第三个正则表达式组
    (?=.*[0-9])                     // 正向先行断言,匹配至少一个数字
    (?=.*[A-Z])                     // 正向先行断言,匹配至少一个大写字母
    (?=.*[^\w\s])                   // 正向先行断言,匹配至少一个非单词字符和非空白字符
    .{6,18}                         // 匹配6-18个任意字符
)                                   // 结束第三个正则表达式组

该正则表达式包含三个正则表达式组,用 | 进行分隔,表示匹配三种不同的密码格式,分别为:

  • 包含数字、小写字母和大写字母的6-18位密码;
  • 包含数字、小写字母和非单词字符和非空白字符的6-18位密码;
  • 包含数字、大写字母和非单词字符和非空白字符的6-18位密码。

每个正则表达式组都使用了三个正向先行断言,确保密码中至少包含指定的字符类型。(?=.[0-9]) 表示密码中至少包含一个数字,(?=.[a-z]) 表示密码中至少包含一个小写字母,(?=.[A-Z]) 表示密码中至少包含一个大写字母,(?=.[^\w\s]) 表示密码中至少包含一个非单词字符和非空白字符。

最后使用 .{6,18} 来匹配密码中的任意字符,并限制密码长度在6-18个字符之间。

STRONG_PATTERN

(                           // 开始正则表达式组
    ?=.*[0-9]               // 正向先行断言,匹配至少一个数字
    (?=.*[a-z])             // 正向先行断言,匹配至少一个小写字母
    (?=.*[A-Z])             // 正向先行断言,匹配至少一个大写字母
    (?=.*[^\w\s])           // 正向先行断言,匹配至少一个非单词字符和非空白字符
    .{6,18}                 // 匹配6-18个任意字符
)                           // 结束正则表达式组

该正则表达式用于匹配包含数字、小写字母、大写字母和非单词字符和非空白字符的6-18位密码。

该正则表达式使用正向先行断言,确保密码中至少包含指定的字符类型。?=.*[0-9] 表示密码中至少包含一个数字,?=.*[a-z] 表示密码中至少包含一个小写字母,?=.*[A-Z] 表示密码中至少包含一个大写字母,?=.*[^\w\s] 表示密码中至少包含一个非单词字符和非空白字符。

最后使用 .{6,18} 来匹配密码中的任意字符,并限制密码长度在6-18个字符之间。

2,使用方法

    public static String checkStrength(String password) {
        if (Pattern.matches(STRONG_PATTERN, password)) {
            return "strong";
        }else if (Pattern.matches(MEDIUM_PATTERN, password)) {
            return "medium";
        } else if (Pattern.matches(WEAK_PATTERN, password)) {
            return "weak";
        }else {
            return "invalid";
        }
    }


    public static void main(String[] args) {
        while(true){
            Scanner scan = new Scanner(System.in);
            String password = scan.next();
            String strength = checkStrength(password);
            System.out.println("Password strength: " + strength);
        }
    }

测试结果

Android Java判断密码强度 强度显示

 3,项目中使用效果

Android Java判断密码强度 强度显示Android Java判断密码强度 强度显示

 Android Java判断密码强度 强度显示Android Java判断密码强度 强度显示文章来源地址https://www.toymoban.com/news/detail-497510.html

到了这里,关于Android Java判断密码强度 强度显示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第12章 STM32+BH1750光照传感器+OLED模块显示环境光照强度

    今天给大家介绍一块嵌入式毕设中也经常用到的一款传感器——BH1750光照传感器,如下图。 (该传感器的购买链接和代码我已放在资料里,想要资料的同学,评论区留下邮箱即可) 相比光敏传感器,它可以直接输出环境光照强度的数值(范围是0~65535lx),非常适合懒人党,

    2024年02月04日
    浏览(54)
  • 【Android】获取手机上所有电话卡的运营商和信号强度

    同一张卡的网络信号,有2G,3G,4G,5G等多种 这里主要实现4G和5G信号强度的获取,2G和3G的获取方式雷同 但由于现在已经不常用了,所以不再写多余的代码

    2024年02月11日
    浏览(41)
  • 【Android】【root & remount 】【1】java中如何判断设备是否在root状态

    前言 客户需求,需要判断设备是否执在root状态。可以理解为是否执行了adb root 设置root状态,已经adb unroot设置unroot状态。 代码分析 分析adb deamon发现:在执行adb root 、adb unroot指令时,系统会更新service.adb.root 变量。 实现 系统应用可以通过SystemProperties get ”service.adb.root“ v

    2024年04月16日
    浏览(54)
  • 【干货】Android系统定制基础篇:第一部分(文件权限、增加信号强度、双路背光控制)

    当需要修改某文件或路径权限时,我们可以在init.rc开机启动某节点添加chmod命令进行修改。但是对于system分区,由于是ro权限,在init.rc使用chmod修改权限无效。需要在文件编译时,对权限进行修改。不同的Android版本改法一样,但是文件所在目录有差异,Android O主要修改文件是

    2024年02月09日
    浏览(54)
  • uniapp表单密码校验:判断两次密码输入是否一致

    uniapp表单密码校验: 无需使用自定义validator进行校验,使用uniapp文档内自带的this.$u.test.object({value:password})即可。 表单中,prop后是判定校验的规则名,v-model动态绑定data内的值。 在微信小程序中使用,如果不是自定义的判定校验,则在onready中添加setRules方法设置规则: 最后

    2024年02月11日
    浏览(52)
  • QT实现窗口的账户以及密码判断登录和退出

    一、作业要求: 1、找出槽函数调用两次的原因         在Qt中使用信号调用槽函数时,当槽函数的函数名定义格式为 “on_对象名_信号”时,则不需要在使用connect来连接信号与槽函数,系统会自动连接信号与槽函数。如果再次使用了connect来连接,则会调用两次槽函数。

    2024年02月16日
    浏览(37)
  • input如何显示密码隐藏密码,点击小眼睛显示隐藏密码

    目录   一、如何单纯的在密码框显示密码 二、如何在密码框里面显示并可以隐藏密码 三、代码展示 四、结果展示      单纯显示密码可以吧type里面的值改成 text ,如果要隐藏就改成  password 。     ​​​​​​​​​​​​​​​​​​​​​ ​​​​​​​     点击

    2024年02月12日
    浏览(43)
  • 创宇区块链|三月安全月报

    三月以来发生的安全事件数量之多、涉及到的金额之高令人沉默。据知道创宇区块链安全实验室【被黑事件档案库】数据显示:该月发生的安全事件超 34 起,其中跨链桥 Ronin 攻击事件涉及金额更是足以媲美去年跨链桥ploy network 攻击事件,损失超 6.2 亿美元,而本月安全事件

    2023年04月08日
    浏览(42)
  • dedecms判断二级栏目为空不显示的方法

    用dedecms开发网站的时候,如果需要调用二级栏目,用channerartlist标签就行,但如果该栏目下无二级栏目,就有空的DIV产生。试了默认标签的运行PHP判断,总不够简洁,下面是最简洁的实现方法。 最新版本的DedeCMS是禁止模板PHP运行的,后台 → 系统 → 系统基本参数 → 其他选

    2024年02月02日
    浏览(40)
  • Python输入账号密码判断是否正确并输出,典型案例-百钱买百鸡的两个程序代码

    目录 前 一、输入账号密码判断是否正确并输出 1.实现的功能 2.代码程序 3.运行截图 二、典型案例-百钱买百鸡 1.实现的功能 2.代码程序 3.运行截图 1.因多重原因,本博文由两个程序代码部分组成,如果想使用快速查找, 建议浏览目录检索; 2.本代码为Python语言,我使用的是

    2024年02月04日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包