`

如何实现程序注册认证

XML 
阅读更多

呵呵,实现程序注册认证:



register.xml

<?xml version="1.0" encoding="gb2312" ?>
<Root> 
   <RegisterDate>
   2009-08-12
   </RegisterDate>
   <RegisterType>
   0
   </RegisterType>
   <RegisterDays>
   2010-09-09
   </RegisterDays>
   <RegisterPwd>
   AA8567D28A67D5084ECE25C9BFD51E1C
   </RegisterPwd>
</Root>



Action

public int getRegister(){

ServletContext context = this.getServlet().getServletContext(); 

  //方法封装
  int reg=check(context); 
  if(reg<=0){
   request.setAttribute("showError", "对不起,您的软件没有注册或注册到期!");
   return mapping.findForward(Constants.FAILURE);
  }


}
  

 


public int check(ServletContext context) {

  
    String reg_name = "";
    String reg_pwd = "";
    String reg_type = "";
    String reg_date = "";
    String reg_days = "";

    int result = 0;

      try {
       XMLReader reader = new XMLReader();
        reader.ReaderXML(context);
    
        reg_name = reader.getElementvalue("Root", "Company").trim();
        reg_pwd = reader.getElementvalue("Root", "RegisterPwd").trim();
        reg_type = reader.getElementvalue("Root", "RegisterType").trim();
        reg_days = reader.getElementvalue("Root", "RegisterDays").trim();
        reg_date = reader.getElementvalue("Root", "RegisterDate").trim();

       //核心部分

        result = checkmac(reg_name, reg_pwd, reg_type, reg_days, reg_date);
  

    } catch (Exception e) {
     log.error("读取注册信息失败!");
      //e.printStackTrace();
    } 
    return result;
  }



 

public Element ReaderXML(String xmlFile) {
 
  try {
//   PatternLayout layout = new PatternLayout("%-5p %d{yyyy-MM-dd HH:mm:ss} [name] %c{2} [line] %L [msg] %m%n");
//   ConsoleAppender appender = new ConsoleAppender( layout, "System.err");
//   log.addAppender(appender);

   SAXBuilder builder = new SAXBuilder();
   Document doc = builder.build(new FileInputStream(xmlFile));
   RootElement = doc.getRootElement();
   }
   catch (IOException ex) {
   log.error("XMLReader构造时出现IO错误("+xmlFile+"):" + ex.toString());
   }
   catch (JDOMException ex1) {
   log.error("XMLReader构造时分析XML文件出错("+xmlFile+"):" + ex1.toString());
   }
   catch (Exception ex) {
   log.error("XMLReader构造出错("+xmlFile+"):" + ex.toString());
   }
   return  RootElement;
  }





  protected int checkmac(String reg_name, String reg_pwd,
                             String reg_type, String reg_days, String reg_date) {
    MD5 md = new MD5();
   // getMD5ofStr是类MD5最主要的公共方法,入口参数是你想要进行MD5变换的字符串
   // 返回的是变换完的结果,这个结果是从公共成员digestHexStr取得的,这里不详述

   String distName = md.getMD5ofStr(distictDao.getRegisterName());
    String newPwd = md.getMD5ofStr( distName + reg_type + reg_days + reg_date );
    if (!newPwd.equals(reg_pwd))
      return 0;
    String currentDate = getTodayFormDate();
    int itype = Integer.parseInt(reg_type);
    int idays = -1;

    switch (itype) {
      case 0:
        break;
      case 1:
        idays = 0;
        break;
    }
    //永久注册
    if (idays == 0)
      return 1;
    //限制注册
    if(compareDate(currentDate, reg_days))
     return 1;
    else
     return 0;

  }




  public static boolean compareDate(String fDate, String sDate) {
    int compareResult = 0;
    if (datidate(fDate) && datidate(sDate)) {
      //split String
      String[] dateArry1 = fDate.split("-");
      String[] dateArry2 = sDate.split("-");

      Calendar cld1 = new GregorianCalendar(Integer.parseInt(dateArry1[0]), Integer.parseInt(dateArry1[1]) - 1, Integer.parseInt(dateArry1[2]));
      Calendar cld2 = new GregorianCalendar(Integer.parseInt(dateArry2[0]), Integer.parseInt(dateArry2[1]) - 1, Integer.parseInt(dateArry2[2]));
      int subYear = cld1.get(Calendar.YEAR) - cld2.get(Calendar.YEAR);
       if (subYear > 0)
        compareResult = Math.abs(subYear * 365 - cld2.get(Calendar.DAY_OF_YEAR)) + cld1.get(Calendar.DAY_OF_YEAR);
      else if (subYear == 0)
        compareResult = cld1.get(Calendar.DAY_OF_YEAR) - cld2.get(Calendar.DAY_OF_YEAR);
      else
        compareResult = subYear * 365 + cld1.get(Calendar.DAY_OF_YEAR) - cld2.get(Calendar.DAY_OF_YEAR);
    } else {
      System.out.println("Date format Error!");
    }
    boolean bResult = false;
    if (compareResult < 0)
      bResult = true;
    return bResult;
  }

 

1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics