最近公司要用随机密码程序,因为是做程序的都有一个通病不想用网上现成的软件,所以写了随机密码生成程序
代码demo就不分享了,下面把生成代码的通用类的接口分享出来,很简单的一个算法,数字+大写字母+小写字母+特殊符号
感兴趣的同学也可以看看我分享的纯JS写的随机密码生成程序
package com.xxx.random.util;
import java.util.Random;
public class Getpass {
private static char[] chars = { '0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k',
'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K',
'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
'Y', 'Z', '!', '@', '#', '
, '%', '^', '&', '*', '~', '|' }; // 72个字符集
/**
* @param passLength
* 随机密码长度
* @param count
* 随机密码个数
* @return 随机密码数组
*/
public static String[] getPasswords(int type, int passLength, int count) {
String[] passwords = new String[count];// 新建一个长度为指定需要密码个数的字符串数组
Random random = new Random();
if (type == 1) {//生成数字
for (int i = 0; i < count; i++) {
StringBuilder password = new StringBuilder("");
for (int m = 1; m <= passLength; m++) {
password.append(chars[random.nextInt(10)]);
}
passwords[i] = password.toString();
}
} else if (type == 2) {//生成数字+小写字母
for (int i = 0; i < count; i++) {
StringBuilder password = new StringBuilder("");
for (int m = 1; m <= passLength; m++) {
password.append(chars[random.nextInt(36)]);
}
passwords[i] = password.toString();
}
} else if (type == 3) {//生成数字+大写字母+小写字母
for (int i = 0; i < count; i++) {
StringBuilder password = new StringBuilder("");
for (int m = 1; m <= passLength; m++) {
password.append(chars[random.nextInt(62)]);
}
passwords[i] = password.toString();// 将生成出来的密码赋值给密码数组
}
}
else if (type == 4) {//生成数字+符号+大写字母+小写字母
for (int i = 0; i < count; i++) {
StringBuilder password = new StringBuilder("");
for (int m = 1; m <= passLength; m++) {
password.append(chars[random.nextInt(72)]);
}
passwords[i] = password.toString();// 将生成出来的密码赋值给密码数组
}
}
else if (type == 5) {//生成小写字母+大写字母
for (int i = 0; i < count; i++) {
StringBuilder password = new StringBuilder("");
for (int m = 1; m <= passLength; m++) {
password.append(chars[random.nextInt(52)+10]);
}
passwords[i] = password.toString();
}
}
else if (type == 6) {//生成小写字母+大写字母+符号
for (int i = 0; i < count; i++) {
StringBuilder password = new StringBuilder("");
for (int m = 1; m <= passLength; m++) {
password.append(chars[random.nextInt(62)+10]);
}
passwords[i] = password.toString();
}
}
else if (type == 7) {//生成大写字母+符号
for (int i = 0; i < count; i++) {
StringBuilder password = new StringBuilder("");
for (int m = 1; m <= passLength; m++) {
password.append(chars[random.nextInt(36)+36]);
}
passwords[i] = password.toString();
}
}
else if (type == 8) {//生成数字+大写字母
for (int i = 0; i < count; i++) {
StringBuilder password = new StringBuilder("");
for (int m = 1; m <= passLength; m++) {
if(random.nextInt(26)<=9){//数字
password.append(chars[random.nextInt(10)]);
}else{//大写字母
password.append(chars[random.nextInt(26)+36]);
}
}
passwords[i] = password.toString();// 将生成出来的密码赋值给密码数组
}
}
else {
System.out.println("输入错误!");
}
return passwords;
}
@SuppressWarnings("static-access")
public static void main(String[] args) {
Getpass get = new Getpass();
String[] s = get.getPasswords(3, 8, 1);
System.out.println(s[0].toString());
// System.out.println(chars[35]);
}
}
复制代码
本文介绍了一个简单的随机密码生成程序,支持多种字符组合方式,可根据需求生成不同类型的密码。
5842

被折叠的 条评论
为什么被折叠?



