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(); }
}