import java.util.Random;
public class RandomPassword {
private int length = 8; // password length
private int numLen = 2; // count of numbers
private int nonABNumLen = 1;// count of special character
/**
* get an alphabeta
* @return
*/
private char getAB() {
Random rand = new Random();
int ri = rand.nextInt(52);
char c = 0;
if (ri < 26) {
c = (char) (65 + ri);
} else {
c = (char) (97 + ri - 26);
}
return c;
}
/**
* get a num
* @return
*/
private char getNum() {
Random rand = new Random();
int ri = rand.nextInt(10);
char c = (char) (48 + ri);
return c;
}
/**
* get a non num / non abc char
* @return
*/
private char getNonABNum() {
Random rand = new Random();
int total = (47 - 32) + (64 - 57) + (96 - 90) + (126 - 122); //total nonABNUM characters
int ri = rand.nextInt(total);
char c = 0;
if (ri < (47 - 32)) {
c = (char) (ri + 32 + 1);
} else if (ri < (47 - 32)+(64 - 57)) {
c = (char) (ri - (47 - 32) + 57 + 1);
} else if (ri < (47 - 32)+(64 - 57) + (96 - 90)) {
c = (char) (ri - (47 - 32) -(64 - 57) + 90 + 1 );
} else {
c = (char) (ri - (47 - 32) -(64 - 57) - (96 - 90) + 122 + 1 );
}
return c;
}
/**
* Generate the password chars array
*/
public String password() {
char[] pwd = new char[length];
// generate the pwd chars
for (int i = 0; i < length; i++ ) {
if (i < length -numLen -nonABNumLen) {
pwd[i] = getAB();
} else if (i < length -nonABNumLen ) {
pwd[i] = getNum();
} else {
pwd[i] = getNonABNum();
}
}
// randomly shuffle pwd char array - Fisher–Yates shuffle
Random rand = new Random();
for (int i = length - 1; i > 0; i --) {
int j = rand.nextInt(i + 1);
// swap char[i] and char[j]
char c = pwd[j];
pwd[j] = pwd[i];
pwd[i] = c;
}
return new String(pwd);
}
/**
* Test
* @param args
*/
public static void main(String[] args) {
RandomPassword rp = new RandomPassword ();
for (int i = 0; i< 20; i++) {
System.out.println ("Random Password: " + rp.password());
}
}
}
某次运行结果:
Random Password: "f1iiu9E
Random Password: X:9LT9UX
Random Password: BO7CQ'U4
Random Password: Esp^N00r
Random Password: f51BpT^D
Random Password: d2)mRPy0
Random Password: m0Ww^8aa
Random Password: FwV)RQ22
Random Password: 1_9hRtSt
Random Password: Q9m1YMM=
Random Password: 7cN#Jo7o
Random Password: 3oa7s^OO
Random Password: i(OB6Xz8
Random Password: VL6h2z^j
Random Password: (eVqu9p9
Random Password: ~DGGS80o
Random Password: [2lp4xlL
Random Password: #vs0sHv9
Random Password: Lp0XX2]L
Random Password: (POo9jC7
分享到:
相关推荐
随机密码生成器
随机密码生成器.exe 随机密码生成器.exe 随机密码生成器.exe
随风随机密码生成器是一个简单的随机密码生成工具。 随风随机密码生成器使用说明: 1.密码可以是“数字,字母,符号”任意组合 2.可生成5到100位密码!满足大多应用!可以选加Id! 3.可一次生成999万个密码!生成...
一款自定义密码长度字母数字特殊符号组合的随机密码生成软件,随机字符、随机数字、随机密码生成工具高强度随机密码生成器:可自定义生成随机数字、大小写字母、特殊字符的随机密码生成工具随机字符生成器:支持纯...
这是一些java随机密码生成的源码,对于初学开发者有一定的帮助、
随风随机密码生成器Ver1.0 闲暇时,做了个随机密码生成工具,欢迎使用! 以下是简单说明: 1.密码可以是“数字,字母,符号”任意组合! 2.可生成5到100位密码!满足大多应用!可以选加Id! 3.可一次生成999万...
用vb编写的随机密码生成器,可以免去填写密码时费脑子考虑,不过生成的密码要自己记好。密码的位数可以自己选择,也可以选择密码中包含的内容,数字、大写字母、小写字母以及其它字符都可以选,也可以组合使用。
用C++编写的随机密码生成工具软件,简单易懂
软件加密,随机密码生成,纯PB生成,不需要插件,附加进去或者代码拷贝进去OK
简易6位随机密码生成器,可以自动生成6位字母的随机密码
简单的随机密码生成工具,简单的随机密码生成工具,简单的随机密码生成工具,简单的随机密码生成工具
CnCrypt密码生成器用于根据自己的选项生成随机密码,可定义所需要密码的长度。生成的密码字符类型,大小写字母、数字等,可设置每个字符只出现一次,也可设置排除象形字符、特殊字符等。生成的随机密码非常复杂,...
和同学设计了一个生成伪随机密码的思路,与大家分享。 设计宗旨 1,不同网站不同账号对应的注册密码不同; 2,只需记住一个较长的种子; 3,一个网站数据泄露,不会被推出其它网站密码。 由1和2得出:密码是{...
VC++随机密码生成器
可选A-Z a-z 0-9以及自定义字符和密码长度生成随机密码,自主开发,是你想要的生成随机密码生成器,无需安装,下载直接运行 如果你需要一款好用的密码生成工具,不妨试试小编带来的这款Random Password软件,功能...
绿色小软件,绝对无毒,16位随机密码生成器