首页 java实战 java代码随机生成密码

java代码随机生成密码

传入一个密码长度 生成一个符合要求的密码   要求 需要可以设定 生成密码中数字的个数 生成密码中字母的个数 …

传入一个密码长度

生成一个符合要求的密码

 

要求

需要可以设定

生成密码中数字的个数

生成密码中字母的个数

生成密码中符号的个数

 

/**
 * 自动生成密码
 * Usage: java CreateKey length count
 *        length-密码长度,最小为6
 *        count -密码个数
 */

public class CreateKeyUtil
{
    public static void main(String[] args)
    {
        System.out.println(getRandKeys(9));
        /*if (args.length<2)
        {
            System.out.println("使用方法: java CreateKey length count");
            System.out.println("参数说明:    length-密码长度,最小为6");
            System.out.println("             count-密码个数");
            System.exit(1);
        }*/
        //int count,length;
        //length=Integer.parseInt(args[0]);
        //count=Integer.parseInt(args[1]);
        //length=8;
        //count=10;
        /*if (length<6)
        {
            System.out.println("密码长度最小为6");
            System.exit(2);
        }
        for (int i=0;i<count;i++)
            System.out.println(getRandKeys(length));*/
    }

    // 生成指定长度的密码
    public static String getRandKeys( int intLength ) {

        String retStr;      //生成的密码
        //String strTable = "23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz!@#$%^&*<>/.,";
        String strTable = "23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz";
        //密码使用符号,可更改

        int len = strTable.length();
        boolean bDone = false;  //生成结束标志
        do {
        retStr = "";
        int count = 0;      //生成密码中数字的个数
        int count1 = 0;     //生成密码中字母的个数
        int count2 = 0;     //生成密码中符号的个数

        for ( int i = 0; i < intLength; i++ ) {
            int intR = (int) Math.floor( Math.random() * len );
            char c = strTable.charAt( intR );   //找到指定字符

            //判断字符类型并计数:数字,字母,符号
            if ( ( '0' <= c ) && ( c <= '9' ) ) {
            count++;
            } else if ( ( 'A' <= c ) && ( c <= 'z' ) ) {
            count1++;
            } else
            {
            count2++;
            }
            retStr += strTable.charAt( intR );
        }
        //if ( count >= 1 && count1>=4 && count2>=1) {
            if ( count >= 1 && count1>=4 ) {
            //如果符号密码强度,则置结束标志:密码至少包含1个数字,4个字母,1个符号
            bDone = true;
        }
        } while ( !bDone );

        return retStr;
    }
}

 

 

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

为您推荐

mysql 统计日期 今天,昨天,上个月,这个月 ,一年

mysql 统计日期 今天,昨天,上个月,这个月 ,一年

查询5分钟前的数据 select * from table where end_date between date_ad...
Illegal key size or default parameters

Illegal key size or default parameters

简介: java中使用AES对称加密后,请求报错: Caused by: java.lang.RuntimeExcept...
nginx跨域问题

nginx跨域问题

add_header Access-Control-Allow-Origin *; add_header Access-...
Ajax请求发送成功但不进success的解决方法

Ajax请求发送成功但不进success的解决方法

dataType:’Text’ 格式严格按照服务端返回的数据来
【java】post请求参数全大写后台接不到参数

【java】post请求参数全大写后台接不到参数

测试验证的时候发现,接收不到请求参数   驼峰正常 springMVC使用的是Jackson来解析json格式的请求报文...
返回顶部