随机生成密码(如MYSQL)

密码包含数字,字母,特殊字符

package com.keegoo.uService.util;

import java.util.Random;

/**
 * Created by wxd on 17/5/25.
 */
public class RandomPassword {

    public static void main(String[] args) {

        String password = getRandomPassword(10);
        System.out.println(password);
    }

    //获取验证过的随机密码
    public static String getRandomPassword(int len) {
        String result = null;

        /*if(len >= 6) {
            for(result = makeRandomPassword(len);len >= 6;result = makeRandomPassword(len)){
                if (result.matches(".*[a-z]{1,}.*") && result.matches(".*[A-Z]{1,}.*") && result.matches(".*\\d{1,}.*") && result.matches(".*[~!@#$%^&*\\.?]{1,}.*")) {
                    return result;
                }
            }
        }*/
        while(len>=6){
            result = makeRandomPassword(len);
            if (result.matches(".*[a-z]{1,}.*") && result.matches(".*[A-Z]{1,}.*") && result.matches(".*\\d{1,}.*") && result.matches(".*[~!@#$%^&*\\.?]{1,}.*")) {
                return result;
            }
            result = makeRandomPassword(len);
        }
        return "长度不得少于6位!";
    }
    //随机密码生成
    public static String makeRandomPassword(int len){
        char charr[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890~!@#$%^&*.?".toCharArray();
        //System.out.println("字符数组长度:" + charr.length); //可以看到调用此方法多少次
        StringBuilder sb = new StringBuilder();
        Random r = new Random();

        for (int x = 0; x < len; ++x) {
            sb.append(charr[r.nextInt(charr.length)]);
        }
        return sb.toString();
    }

}


你可能感兴趣的:(随机生成密码(如MYSQL))