前段时间用Java编写过一个名叫PasswordGenerate的密码生成器,最近看到别人写的一段PHP代码,从中受到启发,于是对我的这个密码生成器进行了改进,优化了不少代码行,详细请见下面的源代码:
package passwordgenerate;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Random;
/**
* 密码生成器
* @author Jason jasonwei06@hotmail.com
* @version 2.0
*/
public class Main {
int intPassLength = 0; //密码长度
char arrayString[] = new char[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();
}
}
int j = 0;
for(int i = 48; i <= 57; i++) { //0-9
Main.arrayString[j] = (char)i;
j++;
}
for(int i = 65; i <= 90; i++) { //A-Z
Main.arrayString[j] = (char)i;
j++;
}
for(int i = 97; i <= 122; i++) { //a-z
Main.arrayString[j] = (char)i;
j++;
}
String strPassword = Main.doGenerate(Main.intPassLength);
System.out.print("本次生成的密码为:" + strPassword);
}
}
阳光部落原创