CAS验证

    技术2022-05-20  68

    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)