java 自动生成密码

来源:未知 责任编辑:责任编辑 发表时间:2013-12-18 11:34 点击:

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

public class CreateKey
{
 public static void main(String[] args)
 {
  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]);
  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!@#$%^&*<>/.,";
  //密码使用符号,可更改

     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) { 
      //如果符号密码强度,则置结束标志:密码至少包含1个数字,4个字母,1个符号
      bDone = true;
  }
     } while ( !bDone );

     return retStr;

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Java编程语言的八大优点
  • JVM对象生命周期详细介绍
  • Java平台上的CRM系统
  • Java 算数测试小程序
  • Command(命令模式)
  • Java 一个简单的画图程序
  • Java 日历的小程序
  • Java环境 使用Resin在NT环境下配置JSP环境
  • Java 统计代码的小工具
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1