最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java正則表達(dá)式判斷強(qiáng)密碼和隨機(jī)生成強(qiáng)密碼代碼示例

 更新時(shí)間:2023年08月02日 10:01:22   作者:JurenXxt  
這篇文章主要給大家介紹了關(guān)于java正則表達(dá)式判斷強(qiáng)密碼和隨機(jī)生成強(qiáng)密碼的相關(guān)資料,最近需要一個(gè)密碼強(qiáng)度正則表達(dá)式在用戶注冊(cè)時(shí)校驗(yàn)用戶密碼強(qiáng)度,需要的朋友可以參考下

前言

項(xiàng)目中遇到需要判斷管理員登陸密碼為強(qiáng)密碼,同時(shí)可以自動(dòng)隨機(jī)生成強(qiáng)密碼,寫了一個(gè)函數(shù)。

一、定義幾個(gè)常量

// 先把需要驗(yàn)證的規(guī)則放入一個(gè)字符數(shù)組中
  private static final char[] CHAR = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890@#$%^&+="
          .toCharArray();
//定義正則表達(dá)式規(guī)則至少要一個(gè)大寫字母一個(gè)小寫字母一個(gè)特殊字符,密碼長(zhǎng)度在8~16位之間
  private static final String PASSWORD_REGEX = "^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]){1,2}+(?=\\S+$).{8,16}$";
//判斷密碼中是否有中文
  private static final String NO_CHINESE_REGEX = "^[^\\u4e00-\\u9fa5]+$";
//根據(jù)上面兩個(gè)規(guī)則創(chuàng)建兩個(gè)模式用于校驗(yàn)
  private static final Pattern PASSWORD_PATTERN = Pattern.compile(PASSWORD_REGEX);
  private static final Pattern NO_CHINESE_PATTERN = Pattern.compile(NO_CHINESE_REGEX);

二、生成強(qiáng)密碼

    /**
     * 隨機(jī)生成強(qiáng)密碼
     * @param length 密碼長(zhǎng)度
     * @return password
     */
    public static String generatePassword(int length) {
    //判斷密碼是否在8~16位之間超出或小于都會(huì)設(shè)置默認(rèn)長(zhǎng)度
        length = length < 8 ? 8 : length;
        length = length > 16 ? 16 : length;
        //調(diào)用獲取隨機(jī)強(qiáng)密碼函數(shù)
        String result = getRandomPassword(length);
        // 如果規(guī)則滿足條件直接返回強(qiáng)密碼,否則再次調(diào)用
        Matcher m = PASSWORD_PATTERN.matcher(result);
        Matcher m1 = NO_CHINESE_PATTERN.matcher(result);
        if (m.matches() && m1.matches()) {
            return result;
        }
        return generatePassword(length);
    }
    //隨機(jī)生成強(qiáng)密碼
 	private static String getRandomPassword(int length) {
        StringBuilder sb = new StringBuilder();
        //線程安全隨機(jī)數(shù)
        ThreadLocalRandom r = ThreadLocalRandom.current();
        for (int x = 0; x < length; ++x) {
        //添加CHAR里面的隨機(jī)下標(biāo)
            sb.append(CHAR[r.nextInt(CHAR.length)]);
        }
        return sb.toString();
    }

三.校驗(yàn)密碼強(qiáng)度

    /**
     * 校驗(yàn)密碼復(fù)雜度,至少包含8個(gè)字符,最多包含20個(gè)自負(fù)
     * 至少包含一個(gè)數(shù)字,一個(gè)大寫字母,一個(gè)小寫字母,一個(gè)特殊字符,同時(shí)不能包含空白區(qū)域
     * @param password 密碼
     * @return true/false
     */
    public static boolean checkPasswordComplexity(String password) {
        if(StringUtils.isBlank(password)){
            return false;
        }
        if (password.length()> 8 && password.length() < 16) {
            //密碼至少包含:大小寫英文字母、數(shù)字、特殊符號(hào),密碼長(zhǎng)度大于8位,小于16位
            String regex = "^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\\S+$).{8,16}$";
            // 判斷密碼是否匹配規(guī)則
            return Pattern.matches(regex, password);
        }
        else {
            return false;
        }
    }

總結(jié)

以上就是java如何使用正則表達(dá)式判斷是否為強(qiáng)密碼和如何隨機(jī)生成強(qiáng)密碼。

到此這篇關(guān)于java正則表達(dá)式判斷強(qiáng)密碼和隨機(jī)生成強(qiáng)密碼的文章就介紹到這了,更多相關(guān)java正則判斷強(qiáng)密碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 記一次springboot配置redis項(xiàng)目啟動(dòng)時(shí)的一個(gè)奇怪的錯(cuò)誤

    記一次springboot配置redis項(xiàng)目啟動(dòng)時(shí)的一個(gè)奇怪的錯(cuò)誤

    這篇文章主要介紹了spring?boot配置redis項(xiàng)目啟動(dòng)時(shí)的一個(gè)奇怪的錯(cuò)誤,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • java中原碼、反碼與補(bǔ)碼的問題分析

    java中原碼、反碼與補(bǔ)碼的問題分析

    本篇文章介紹了,在java中原碼、反碼與補(bǔ)碼的問題分析。需要的朋友參考下
    2013-04-04
  • SpringBoot快速集成jxls-poi(自定義模板,支持本地文件導(dǎo)出,在線文件導(dǎo)出)

    SpringBoot快速集成jxls-poi(自定義模板,支持本地文件導(dǎo)出,在線文件導(dǎo)出)

    這篇文章主要介紹了SpringBoot快速集成jxls-poi(自定義模板,支持本地文件導(dǎo)出,在線文件導(dǎo)出),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Java web過濾器驗(yàn)證登錄防止未登錄進(jìn)入界面

    Java web過濾器驗(yàn)證登錄防止未登錄進(jìn)入界面

    這篇文章主要介紹了Java web過濾器驗(yàn)證登錄防止未登錄進(jìn)入界面,在一些系統(tǒng)中經(jīng)常可以用到此功能,對(duì)java web 驗(yàn)證登錄知識(shí)感興趣的朋友一起看下吧
    2016-08-08
  • JAVA實(shí)現(xiàn)caesar凱撒加密算法

    JAVA實(shí)現(xiàn)caesar凱撒加密算法

    Carsar加密算法是最簡(jiǎn)單的加密算法,原理是把一個(gè)字母在字母表中移動(dòng)相應(yīng)的位置,比如輸入a,將其移動(dòng)3位,經(jīng)過Caesar加密后輸出的d,位置可以循環(huán)移動(dòng),輸入x,則輸出a
    2014-01-01
  • Spring?boot整合ELK詳細(xì)過程

    Spring?boot整合ELK詳細(xì)過程

    ELK是由Elasticsearch、Logstash和Kibana三個(gè)開源軟件組成的技術(shù)堆棧,主要用于數(shù)據(jù)的存儲(chǔ)、處理和可視化,本文給大家介紹Spring?boot整合ELK詳細(xì)過程,感興趣的朋友一起看看吧
    2024-01-01
  • springboot3.x集成SpringDoc Swagger3過程

    springboot3.x集成SpringDoc Swagger3過程

    文章介紹了如何將Spring Boot 2.x升級(jí)到3.x并同步升級(jí)Swagger 2到Swagger 3,包括添加Maven依賴、編寫SpringDoc配置類、添加Swagger 3注解、自定義過濾器防止未授權(quán)訪問等步驟
    2026-01-01
  • JAVA實(shí)現(xiàn)Base64編碼的三種方式

    JAVA實(shí)現(xiàn)Base64編碼的三種方式

    本文主要介紹了JAVA實(shí)現(xiàn)Base64編碼的三種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • SpringBoot讀取resource文件代碼實(shí)例

    SpringBoot讀取resource文件代碼實(shí)例

    這篇文章主要介紹了SpringBoot讀取resource文件代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Spring boot 總結(jié)之跨域處理cors的方法

    Spring boot 總結(jié)之跨域處理cors的方法

    本篇文章主要介紹了Spring boot 總結(jié)之跨域處理cors的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02

最新評(píng)論

邵武市| 长泰县| 青铜峡市| 冕宁县| 淮南市| 甘肃省| 巨鹿县| 黎川县| 禹州市| 高安市| 怀宁县| 奉化市| 太谷县| 张掖市| 广安市| 登封市| 且末县| 黑水县| 辉县市| 孙吴县| 长顺县| 庐江县| 特克斯县| 定襄县| 新龙县| 阿合奇县| 射洪县| 闻喜县| 安国市| 扎兰屯市| 衡阳县| 武清区| 郁南县| 新营市| 如皋市| 綦江县| 页游| 古田县| 堆龙德庆县| 逊克县| 黄骅市|