分享
 
 
 

控制软件试用期的源代码(新手三个小时的结果)(原创)

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

实现原理:通过判断用户的登陆次数以及设置到期时间与系统现有时间对比,两者之中有一为非法则提示软件到期。 其中字符串对比通过MD5。 我想一开始把txt设置为隐藏模式,而试用期一过就删除txt文件,应该做到比较好的效果,欢迎讨论! msn:yun15291li@hotmail.com QQ:17664554 package Admin.Control; import java.io.*; import java.security.MessageDigest; import Admin.Control.MD5; import java.util.*; /** * Title: *****系统

* Description: ****系统

* Copyright: Copyright (c) 2004

* Company: 北京大学软件学院

* @author 云广 * @version 1.0 */ public class ControlValid { private final String REGISTERNUMBER; //加密的原始字符串 private String md5Number; //MD5加密后的字符串 private String writeContent; //需要写入文本的内容 private int loginTimesLimit; //登陆次数限制 private static int loginTimesTrue; //用户的实际登陆次数 private MD5 md5Object; //实例化MD5对象 private Calendar cal; //日期时间类 private int orderTime; //设定的系统到期时间 //构造方法进行初始化赋值 public ControlValid() { REGISTERNUMBER = "你想输入的正确验证字符串"; md5Object = new MD5(); loginTimesLimit = 99; loginTimesTrue = 0; writeContent = null; cal = Calendar.getInstance(); orderTime = 0; } //返回经过MD5加密过的字符串 public String returnMd5String() { try { //得到经过MD5加密过的字符串 md5Number = md5Object.MD5(REGISTERNUMBER); return md5Number; } catch (Exception e) { return null; } } //将字符串写进指定文本 public void writeFile() { try { String returnFileString; int returnLastLoginTimes = 0; //Calendar cal = Calendar.getInstance(); //测试获得系统时间 int currentDate = cal.get(cal.YEAR) + (cal.get(cal.MONTH) + 1) + cal.get(cal.DAY_OF_MONTH); //System.out.println(currentDate); //需要写入文本文件的字符串 String returnInitDate = this.readFile("InitDate.txt"); orderTime = Integer.parseInt(returnInitDate); returnFileString = this.readFile("ControlValid.txt"); //获得换行的位置 int pos = returnFileString.indexOf("\n"); if (pos != -1) { returnLastLoginTimes = Integer.parseInt(returnFileString.substring(pos+1, pos+3)); } loginTimesTrue = returnLastLoginTimes; this.setLoginTimesTrue(); //根据日期和用户登陆次数判断写入的字符串 if ( (currentDate < orderTime) && (this.getLoginTimesTrue() < loginTimesLimit)) { //writeContent = this.returnMd5String() + "\n" + this.getLoginTimesTrue(); writeContent = this.returnMd5String() + "\r" + this.getLoginTimesTrue(); } else { //随机产生一数字进行输入 Random ranInt = new Random(); //int randomInt = ; writeContent = String.valueOf(ranInt.nextInt(10000000))+ "\r" + this.getLoginTimesTrue(); } //将加密过的字符串写入文本文件 File f = new File("ControlValid.txt"); if (!f.exists()) { f.createNewFile(); } DataOutputStream outFile = new DataOutputStream( new BufferedOutputStream( new FileOutputStream(f))); byte[] byteWriteContent = writeContent.getBytes(); outFile.write(byteWriteContent); outFile.close(); } catch (Exception e) { System.out.println(e.getMessage()); } } //在指定文本中读取数据 public String readFile(String fileName) { String sLine = "",sResult = ""; boolean testFirstLine=true; try { DataInputStream inFile = new DataInputStream( new BufferedInputStream( new FileInputStream(fileName))); while ( (sLine = inFile.readLine()) != null) { if (testFirstLine) { sResult = sLine; testFirstLine=false; } else { sResult += "\n" + sLine; } } inFile.close(); return sResult; } catch (Exception e) { return null; } } //注册字符串与文本中返回的字符串对比 public boolean ContractRegisterString() { String returnFileString; String md5String; String returnMd5String = ""; int i = 0; returnFileString = this.readFile("ControlValid.txt"); //获得换行的位置 int pos = returnFileString.indexOf("\n"); if (pos != -1) { returnMd5String = returnFileString.substring(0,pos); } md5String = this.returnMd5String(); //System.out.println(returnFileString); //得到经过MD5加密过的字符串 if (md5String.equals(returnMd5String)) { return true; } else { return false; } } //用户每登陆一次就把实际登陆次数变量加1 public void setLoginTimesTrue() { loginTimesTrue += 1; } //返回用户实际登陆次数 public static int getLoginTimesTrue() { return loginTimesTrue; } //主方法测试用 public static void main(String[] args) { // int i = 0; ControlValid controlValid = new ControlValid(); //设置登陆次数 // for (i = 0; i < 25; i++) { // controlValid.setLoginTimesTrue(); // } //写入内容到文件 controlValid.writeFile(); controlValid.ContractRegisterString(); } }

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有