随机生成指定长度的密码思路:

1.密码中可能包含字母,数字,特殊符号,为了区别分别定义常量

2.随机生成密码,自然想到要用到java.util.Random 类

3.定义一个带两个参数的方法,1跟2,分别指定密码内容类型和密码长度

具体实现过程:

import java.util.Random;
/**
* @author
* @date 创建时间:
* @version 1.0
* @parameter
* @since
* @return
*/
public class RandomChar {

private static final String CHAR_ALL = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";

private static final String CHAR_LOWERCASE = "qwertyuiopasdfghjklzxcvbnm";

private static final String CHAR_UPPERCASE = "QWERTYUIOPLAKSJDHFGZXCVBNM";

private static final String NUMBERS = "0123456789";

private static final String ALL = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890";

private static final String CHAR_SPECIAL_ALL = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM~!@#$%^&*";

public static final int RANDOM_CHAR_UPPERCASE = 0;

public static final int RANDOM_CHAR_LOWERCASE = 1;

public static final int RANDOM_CHAR_ALL = 2;

public static final int RANDOM_NUMBERS = 3;

public static final int RANDOM_ALL = 4;

public static final int RANDOM_SPECIAL_ALL = 5;
/**
* @author
* @date 创建时间:2016-11-28 下午10:38:52
* @version 1.0
* @parameter1 type
* @parameter2 len
* @since
* @return String
*/
       public static String getChars(int type, int len) {

Random random = new Random();

int i = 0;
String random_source = null;
switch (type) {
case RANDOM_CHAR_UPPERCASE:
random_source = CHAR_UPPERCASE;
break;
case RANDOM_CHAR_LOWERCASE:
random_source = CHAR_LOWERCASE;
break;
case RANDOM_CHAR_ALL:
random_source = CHAR_ALL;
break;
case RANDOM_NUMBERS:
random_source = NUMBERS;
break;
case RANDOM_ALL:
random_source = ALL;
break;
case RANDOM_SPECIAL_ALL:
random_source = CHAR_SPECIAL_ALL;
break;
default:
random_source = CHAR_SPECIAL_ALL;
break;

}

int length = random_source.length();
String result = "";

while (i < len) {
int v = Math.abs(random.nextInt()) % length;
result += random_source.substring(v, v + 1);
i++;

}
          return result;
}

public static void main(String[] args)
{
        String newPasswd=RandomChar.getChars(4, 6);
        System.out.println("新密码是:"+newPasswd);
}
}

有兴趣的可以参考java源码中Random类具体实现方法。

参考链接:http://www.cnblogs.com/chenning/p/4873422.html

 

随机生成指定长度的密码之---Random的更多相关文章

  1. Python--随机生成指定长度的密码

    在浏览别人博客时学习了random模块,手痒自我练习下,写个随机生成指定长度的密码字符串的函数,拿出来供各位参考: 废话不多说,上代码: # coding: utf-8 import random i ...

  2. 随机生成指定长度字符字符串(C语言实现)

    相关函数 srand(), rand()头文件#include<stdlib.h> 定义函数 int rand(void) 函数说明 rand()会返回一随机数值,范围在0至RAND_MA ...

  3. php随机生成指定长度的字符串 可以固定数字 字母 混合

    php 生成随机字符串 可以指定是纯数字 还是纯字母 或者混合的. 可以指定长度的. function rand_zifu($what,$number){ $string=''; for($i = 1 ...

  4. Js随机生成指定长度字符串

    function a(a) { var d, e, b = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789&q ...

  5. (C#)生成指定长度的随机字符串的通用方法

    .NET(C#)生成指定长度的随机字符串的通用方法,此方法可以指定字符串的长度,是否包含数字,是否包含符号,是否包含小写字母,是否包含大写字母等, 源码: #region 生成指定长度的随机字符串 / ...

  6. JS生成指定长度的随机数

    /** * 生成指定长度的UUID * @param len * @param radix * @returns uuid * eg: createUUID(8, 2) "01001010& ...

  7. shell生成指定长度的随机数

    生成指定长度是随机数 # 8位纯数字的随机数 tr -cd '0-9' </dev/urandom | head -c 8 # 16位包含字母.数字的随机数 tr -cd '[:alnum:]' ...

  8. python 随机生成固定长度的字串

    from random import Random#随机生成4到20位的用户名def random_username(): username = '' chars = 'AaBbCcDdEeFfGgH ...

  9. 如何利用神经网络和Python生成指定模式的密码

    今天给大家介绍的是Github上一个名叫PyMLProjects的项目,这个项目的目的是为了训练AI来学习人类构造密码的模式,然后我们就可以用AI来生成大量同一模式或种类的密码了.这种方法也许可以用来 ...

随机推荐

  1. Codeforces 最大流 费用流

    这套题目做完后,一定要反复的看! 代码经常出现的几个问题: 本机测试超时: 1.init函数忘记写. 2.addedge函数写成add函数. 3.边连错了. 代码TLE: 1.前向星边数组开小. 2. ...

  2. JLOI2018 日志

    JLOI2018 今年有幸参加吉林省的省选,考过之后在这里写一下总结和感受. DAY1: t1(chess):首先看到题目,第一想法是暴力,上来直接写了暴力,枚举所有的情况,再在这些情况里找到差值最大 ...

  3. luogu P3116 [USACO15JAN]会议时间Meeting Time

    题目描述 Bessie and her sister Elsie want to travel from the barn to their favorite field, such that the ...

  4. Geoserver跨域问题

    1 Geoserver位war包,使用Tomcat发布的情况 由于geoserver为war形式,需要解决tomcat跨域问题,geoserver版本为2.9.1. (1)下载跨域war包 下载cor ...

  5. 有关javaScript面向对象和原型笔记

    javaScript是一种比較特殊的语言,ECMAScript中没有类的概念.跟其它面向对象的语言有一定的差别.它的对象也与基于类的语言中的对象有所不同,严格来说,javascript对象是一组没有特 ...

  6. java基础篇5之泛型

    1 泛型的基本应用 //反射方式 指定类型,就不用强转 Construcctor<String> constructor = String.class.getConstructor(Str ...

  7. java集合类型接口和实现类个人总结

    转载:http://blog.csdn.net/qingchunbusanchang/article/details/39576749 java的集合是一个比较综合的概念,相关的知识有很多的博客里面做 ...

  8. Solidworks如何保存为网页可以浏览的3D格式

    1 如图所示3D装配图,在Solidworks中可以旋转,缩放.   2 我想要另存为在浏览器中可以缩放,旋转的格式.如下所示(我的装配图初步.htm)   3 步骤是,先在Solidworks中出版 ...

  9. apache TIME_WAIT解决办法

    最近发现apache与负载均衡器的的连接数过多,而且大部分都是TIME_WAIT,调整apache2.conf后也没效果,最后百度到如下解决方案 通过调整内核参数解决 vi /etc/sysctl.c ...

  10. dedecms织梦后台password忘记了怎么办?dedecms织梦后台password忘记怎样找回password?

    方法一:自己用解密的方式 用phpmyadmin登陆后台数据库,查看 找到password:去除前三位和后一位,然后拷贝到http://www.cmd5.com/在线解密工具里面解密 watermar ...