CAS验证

public class CASValidation {

 public static String CAS_VALIDATE_PATH = "";
 
 public void createValidateInfo() throws Exception{
  boolean flag = true;
  File carPath = new File(this.getClass().getResource("").getPath()+"/nos.crt");
  CertificateFactory cf=CertificateFactory.getInstance("X.509");
     FileInputStream in=new FileInputStream(carPath);
     Certificate c=cf.generateCertificate(in);
     String s=c.toString();
       
     X509Certificate t=(X509Certificate)c;
     byte [] encod2=c.getEncoded();
     X509CertImpl cimp2=new X509CertImpl(encod2);  //用该编码创建X509CertImpl类型对象
     X509CertInfo cinfo2=(X509CertInfo)cimp2.get(X509CertImpl.NAME+"."+X509CertImpl.INFO);//获取X509CertInfo
    
     Date begindate=new Date(); //获取当前时间
     Date enddate=new Date(begindate.getTime()+30*24*60*60*1000L); //有效期为30天
     System.out.println("enddate======="+enddate.toLocaleString());
     System.out.println("begin======="+t.getNotBefore().toLocaleString());
     System.out.println("end======="+t.getNotAfter().toLocaleString());
     CertificateValidity cv=new CertificateValidity(begindate,enddate); //创建对象
     cinfo2.set(X509CertInfo.VALIDITY,cv);  //设置有效期

//     int sn=(int)(begindate.getTime()/1000);    //以当前时间为序列号
//     CertificateSerialNumber csn=new CertificateSerialNumber(sn);
//     cinfo2.set(X509CertInfo.SERIAL_NUMBER,csn);

     //FileOutputStream out=new FileOutputStream(carPath);

     System.out.println(carPath.getPath());
     System.out.println(s);
 }
 
 public boolean validationSecurity(){
  boolean flag = true;
  try{
  CertificateFactory cf=CertificateFactory.getInstance("X.509");
  File carPath = new File(this.getClass().getResource("").getPath()+"/nos.crt");
     FileInputStream in1=new FileInputStream(carPath);
     java.security.cert.Certificate  c1=cf.generateCertificate(in1);
     X509Certificate t=(X509Certificate)c1;
     Date TimeNow=new Date();
     try{
         t.checkValidity(TimeNow);
         if(!validationModifyDate()){
          
         }else{
          insertLoginDate();
         }
      }catch(CertificateExpiredException e){  //过期
       flag = false;
         System.out.println("Expired");
         System.out.println(e.getMessage());
      }catch(CertificateNotYetValidException e){ //尚未生效
       flag = false;
         System.out.println("Too early");
         System.out.println(e.getMessage());
      }

  }catch(Exception e){
   flag = false;
  }
  return flag;
 }
 
 public boolean validationModifyDate(){
  boolean flag = true;
  File file = new File(this.getClass().getResource("").getPath()+"/loginDate.txt");
//   File file = new File(fileName);
         BufferedReader reader = null;
         try {
             System.out.println("以行为单位读取文件内容,一次读一整行:");
             reader = new BufferedReader(new FileReader(file));
             String tempString = null;
             String todayStr = DateFormatUtils.format(new Date(), "yyyy-MM-dd"); //今天的日期
          
             int line = 1;
             // 一次读入一行,直到读入null为文件结束
             while ((tempString = reader.readLine()) != null) {
                 // 显示行号
//                 System.out.println("line " + line + ": " + tempString);
//                 System.out.println("比较======="+todayStr.compareTo(tempString));
                 if(todayStr.compareTo(tempString)<0){
                  System.out.println("系统许可时间已过期,请重新申请。");
                  flag = false;
                 }
                 line++;
             }
             reader.close();
         } catch (IOException e) {
             e.printStackTrace();
         } finally {
             if (reader != null) {
                 try {
                     reader.close();
                 } catch (IOException e1) {
                 }
             }
         }

  return flag;
 }
 
 public  void insertLoginDate() {
        try {
              File file = new File(this.getClass().getResource("").getPath()+"/loginDate.txt");
             String todayStr = DateFormatUtils.format(new Date(), "yyyy-MM-dd"); //今天的日期
                //打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件
                FileWriter writer = new FileWriter(file, true);              
                writer.write(todayStr+"/n");
                writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


  /**
     * 以行为单位读取文件,常用于读面向行的格式化文件
     */
    public static void readFileByLines(String fileName) {
        File file = new File(fileName);
        BufferedReader reader = null;
        try {
            System.out.println("以行为单位读取文件内容,一次读一整行:");
            reader = new BufferedReader(new FileReader(file));
            String tempString = null;
            String todayStr = DateFormatUtils.format(new Date(), "yyyy-MM-dd"); //今天的日期
         
            int line = 1;
            // 一次读入一行,直到读入null为文件结束
            while ((tempString = reader.readLine()) != null) {
                // 显示行号
                System.out.println("line " + line + ": " + tempString);
                System.out.println("比较======="+todayStr.compareTo(tempString));
               
                line++;
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e1) {
                }
            }
        }
    }


 public static void main(String[] args){
  CASValidation  casValidation= new CASValidation();
  String fileName = "D:/test/CoreFlow/WebRoot/WEB-INF/classes/com/nos/validation/cas/loginDate.txt";
  
  //CASValidation.appendMethodA(fileName, "2010-12-03/n");
//  CASValidation.readFileByLines(fileName);
  //casValidation.validationModifyDate("2010-12-03");
  
  casValidation.validationModifyDate();
  casValidation.insertLoginDate();
  
 }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值