最近用Java写的一个密码生成器,实现方法是首先定义一个候选字符数组,并通过java.util.Random中的nextInt()方法生成一个随机整数做为候选字符数组的键,来实现随机取出字符的功能,详细程序请见下面的源代码:
package passwordgenerate;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Random;
/**
* 密码生成器
* @author Jason jasonwei06@hotmail.com
* @version 1.0
*/
public class Main {
int intPassLength = 0; //密码长度
String arrayString[] = new String[62]; //候选字符数组
/**
* 生成密码
* @param intPassLength 密码长度
* @return
*/
public String doGenerate(final int intPassLength) {
int intTemp;
String strPassword = "";
Random rand = new Random();
for(int i = 0; i < intPassLength; i++) {
intTemp = rand.nextInt(63);
strPassword += this.arrayString[intTemp];
}
return strPassword;
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
final Main Main = new Main();
//确定密码长度
while(true) {
System.out.print("请输入密码长度[8-64]:");
final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String inputThreadAmount = null;
try {
inputThreadAmount = br.readLine();
if(inputThreadAmount.matches("^[0-9]+$")) {
Main.intPassLength = Integer.parseInt(inputThreadAmount);
if(Main.intPassLength >= 8 && Main.intPassLength <= 64) {
break;
} else {
System.out.println("长度超出范围,请输入8至64之间的数字!");
}
} else {
System.out.println("输入格式有误!请输入8至64之间的数字!");
}
} catch (final Exception e) {
e.getMessage();
}
}
//数字
Main.arrayString[0] = "0";
Main.arrayString[1] = "1";
Main.arrayString[2] = "2";
Main.arrayString[3] = "3";
Main.arrayString[4] = "4";
Main.arrayString[5] = "5";
Main.arrayString[6] = "6";
Main.arrayString[7] = "7";
Main.arrayString[8] = "8";
Main.arrayString[9] = "9";
//小写字母
Main.arrayString[10] = "a";
Main.arrayString[11] = "b";
Main.arrayString[12] = "c";
Main.arrayString[13] = "d";
Main.arrayString[14] = "e";
Main.arrayString[15] = "f";
Main.arrayString[16] = "g";
Main.arrayString[17] = "h";
Main.arrayString[18] = "i";
Main.arrayString[19] = "j";
Main.arrayString[20] = "k";
Main.arrayString[21] = "l";
Main.arrayString[22] = "m";
Main.arrayString[23] = "n";
Main.arrayString[24] = "o";
Main.arrayString[25] = "p";
Main.arrayString[26] = "q";
Main.arrayString[27] = "r";
Main.arrayString[28] = "s";
Main.arrayString[29] = "t";
Main.arrayString[30] = "u";
Main.arrayString[31] = "v";
Main.arrayString[32] = "w";
Main.arrayString[33] = "x";
Main.arrayString[34] = "y";
Main.arrayString[35] = "z";
//大写字母
Main.arrayString[36] = "A";
Main.arrayString[37] = "B";
Main.arrayString[38] = "C";
Main.arrayString[39] = "D";
Main.arrayString[40] = "E";
Main.arrayString[41] = "F";
Main.arrayString[42] = "G";
Main.arrayString[43] = "H";
Main.arrayString[44] = "I";
Main.arrayString[45] = "J";
Main.arrayString[46] = "K";
Main.arrayString[47] = "L";
Main.arrayString[48] = "M";
Main.arrayString[49] = "N";
Main.arrayString[50] = "O";
Main.arrayString[51] = "P";
Main.arrayString[52] = "Q";
Main.arrayString[53] = "R";
Main.arrayString[54] = "S";
Main.arrayString[55] = "T";
Main.arrayString[56] = "U";
Main.arrayString[57] = "V";
Main.arrayString[58] = "W";
Main.arrayString[59] = "X";
Main.arrayString[60] = "Y";
Main.arrayString[61] = "Z";
String strPassword = Main.doGenerate(Main.intPassLength);
System.out.print("本次生成的密码为:" + strPassword);
}
}
阳光部落原创,更多内容请访问 http://www.sunbloger.com/