Java编写的随机密码生成器源码
2023-02-18 16:39:16 时间
最近用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/
相关文章
- 7000+字图文并茂解带你深入理解java锁升级的每个细节
- 全文手敲代码,教你用Java实现扫雷小游戏
- 4种方法教你如何查看java对象所占内存大小
- 手绘图解java类加载原理
- Java中的线程到底有哪些安全策略
- Java中观察者模式与委托,还在傻傻分不清
- 一图详解java-class类文件原理
- Java遇上SPL:架构优势和开发效率,一个不放过
- 长篇图解java反射机制及其应用场景
- [java并发编程]基于信号量semaphore实现限流器
- java并发编程-StampedLock高性能读写锁
- 【java并发编程】ReentrantLock 可重入读写锁
- 【java并发编程】Lock & Condition 协调同步生产消费
- Java synchronized对象级别与类级别的同步锁
- java并发编程JUC第十二篇:AtomicInteger原子整型
- java并发编程JUC第十一篇:如何在线程之间进行对等数据交换
- java并发编程JUC第十篇:CyclicBarrier线程同步
- java并发编程JUC第九篇:CountDownLatch线程同步
- java并发编程工具类JUC第八篇:ConcurrentHashMap
- java并发编程工具类JUC第七篇:BlockingDeque双端阻塞队列