`
xxxcccvvv
  • 浏览: 9580 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

pwdgen

J# 
阅读更多

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-开源

    首先,PwdGen的核心特性在于其随机性。它利用高级的随机数生成算法,确保生成的密码具有高度的不可预测性,从而降低被破解的风险。用户可以根据自己的需求设定密码的长度、数量以及包含的字符类型,如大小写字母、...

    js-pwdgen-wannabe:js-pwdgen-wannabe

    总的来说,`js-pwdgen-wannabe`是一个适合JavaScript初学者的项目,它涵盖了基础语法、字符串操作、随机数生成、用户交互和错误处理等多个方面,通过实践这个项目,开发者不仅能学习到JavaScript的基本技能,还能...

    js-pwdgen-wannabe

    &lt;script src="pwdgen.js"&gt; 密码长度: ()"&gt;生成密码 &lt;p id="result"&gt;&lt;/p&gt; ``` 在这个例子中,`&lt;script&gt;`标签引入了名为"pwdgen.js"的JavaScript文件,这是实现密码生成逻辑的地方。 接下来,我们转向...

    js-pwdgen-wannabe-

    js-pwdgen-wannabe-

    PwdGen

    角度示例该目录是应用的简要示例,可以通过Vercel和零配置进行部署。自行部署使用Vercel部署您自己的Angular项目。 实时示例: : 我们如何创建此示例要开始使用Angular,可以使用初始化项目: $ ng new

    java生成随机数(字符串)示例分享

    首先,`pwdGen`类初始化了一个`Random`对象`rdseed`,这是Java标准库中的`java.util.Random`类,它用于生成伪随机数。`Random`类提供了多种方法来生成不同类型的随机数,如整数、长整型或浮点数。 在`getpwd`方法中...

Global site tag (gtag.js) - Google Analytics