import java.util.Random;
public class PwdGen {
private static final char[] SPECIAL_CHAR_TABLE = { '(', ')', '-', '_', '=',
'[', ']', '{', '}', ':', ',', '.', '?', '!', '*', '$', '#', '%' };
private static final Random rnd = new Random();
/**
* 按指定长度和级别生成密码
*
* @param Len
* 密码长度,最少4位
* @param level
* 密码级别 0.数字 ; 1.字母; 2.数字+字母 ;3.数字+字母+特殊字符
* @return
*/
public static String buildPwd(int Len, int level) {
if (Len < 4) {
Len = 4;
}
String temprandomPwd = "";
String randomPwd = "";
String finalpwd = "";
int ir = rnd.nextInt(Len);
switch (level) {
case 0:// 数字
for (int i = 0; i < Len; i++) {
temprandomPwd += rnd.nextInt(10);
}
finalpwd = changeLocation(temprandomPwd);
break;
case 1:// 字母
for (int i = 0; i < Len; i++) {
temprandomPwd += genLetter(1, 0) + genLetter(1, 1);
}
randomPwd = temprandomPwd.substring(ir, Len + ir);
finalpwd = changeLocation(randomPwd);
break;
case 2:// 数字+字母
for (int i = 0; i < Len; i++) {
temprandomPwd += rnd.nextInt(10) + genLetter(1, 0)
+ genLetter(1, 1);
}
randomPwd = temprandomPwd.substring(Len + ir, Len * 2 + ir);
finalpwd = changeLocation(randomPwd);
break;
default:// 数字+字母+特殊符号
for (int i = 0; i < Len; i++) {
temprandomPwd += rnd.nextInt(10) + genSpecialChar(1)
+ genLetter(1, 0) + genLetter(1, 1);
}
randomPwd = temprandomPwd.substring(Len + ir, Len * 2 + ir);
finalpwd = changeLocation(randomPwd);
break;
}
return finalpwd;
}
public static String genLetter(final int num, final int flag) {
char[] arr = new char[num];
char baseChar = flag == 0 ? 'A' : 'a';
for (int i = 0; i < num; i++) {
arr[i] = (char) (baseChar + rnd.nextInt(26));
}
return new String(arr);
}
public static String genSpecialChar(final int num) {
char[] arr = new char[num];
for (int i = 0; i < num; i++) {
arr[i] = SPECIAL_CHAR_TABLE[rnd.nextInt(SPECIAL_CHAR_TABLE.length)];
}
return new String(arr);
}
public static String changeLocation(final String value) {
char[] arr = value.toCharArray();
for (int i = arr.length; i > 1; i--) {
swap(arr, i - 1, rnd.nextInt(i));
}
return new String(arr);
}
private static void swap(final char[] arr, final int i, final int j) {
char tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
分享到:
相关推荐
首先,PwdGen的核心特性在于其随机性。它利用高级的随机数生成算法,确保生成的密码具有高度的不可预测性,从而降低被破解的风险。用户可以根据自己的需求设定密码的长度、数量以及包含的字符类型,如大小写字母、...
总的来说,`js-pwdgen-wannabe`是一个适合JavaScript初学者的项目,它涵盖了基础语法、字符串操作、随机数生成、用户交互和错误处理等多个方面,通过实践这个项目,开发者不仅能学习到JavaScript的基本技能,还能...
<script src="pwdgen.js"> 密码长度: ()">生成密码 <p id="result"></p> ``` 在这个例子中,`<script>`标签引入了名为"pwdgen.js"的JavaScript文件,这是实现密码生成逻辑的地方。 接下来,我们转向...
js-pwdgen-wannabe-
角度示例该目录是应用的简要示例,可以通过Vercel和零配置进行部署。自行部署使用Vercel部署您自己的Angular项目。 实时示例: : 我们如何创建此示例要开始使用Angular,可以使用初始化项目: $ ng new
首先,`pwdGen`类初始化了一个`Random`对象`rdseed`,这是Java标准库中的`java.util.Random`类,它用于生成伪随机数。`Random`类提供了多种方法来生成不同类型的随机数,如整数、长整型或浮点数。 在`getpwd`方法中...