要求:同时含有大小写字母,数字,特殊字符但不含有空格,8到32位,最好长度作为一个参数可调整
6条回答 默认 最新
- sinat_35938012 2017-11-21 04:35关注
import java.util.Random;
public class RandomPassword {
public static void main(String[] args) {String password = getRandomPassword(8); 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(); }
}
拿去随便改改解决 无用评论 打赏 举报