很多成型的应用软件都有试用版和正式版之分,试用版一般都有功能上的限制,同时也有使用次数或使用期限的限制。要使试用版成为正式版,有些软件是要求你拿注册码注册,还有一些软件是通过授权文件来区分试用版和正式版,从试用版变成正式版,只是把授权文件换一下而已。一般来说,桌面软件会采用注册码的方式较多,而服务器端软件采用授权文件的较多,授权文件一般会将要限制的信息,比如并发数、最后日期等明文、密文一块保存。
本人在做项目过程中采用了一种变通的解决方式,让我的应用有了使用日期的限制:
1、将要限制的日期采用MD5加密,连同明文的日期一起放在一个配置文件里
2、在程序中加一个过滤器,读取这个配置文件,通过对读取到的明文重新进行加密,和从配置文件里读取到的密文进行比较
3、如果两者不一致,表明授权文件遭到篡改,不再继续提供服务
4、如果两者一致,继续比较从配置文件里读取的限制日期和当前日期,如果当前日期晚于限制日期,表明使用期限已到,不再继续提供服务
5、否则继续提供服务
相关代码如下:
加密类
public class SecurityUtil {//采用这个类将明文加密 /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String expiration = "2012-10-09"; String signature = ""; try{ signature = SecurityUtil.doMessageDigest(expiration); } catch(Exception e){ e.printStackTrace(); } System.out.println("expiration:" + expiration + "\nsignature:" + signature);//产生的密文和明文一起存入配置文件 } public static String doMessageDigest(String arg) throws Exception{ //要生成摘要的明文 byte[] b=arg.getBytes("UTF8"); //生成摘要 MessageDigest md=MessageDigest.getInstance("MD5"); md.update(b); byte[]s=md.digest(); //显示生成的摘要 String res=""; for(int i=0;i<s.length;i++){//将字节数组转换成字符串 res=res+Integer.toHexString((0x000000ff&s[i])|0xffffff00).substring(6); } return res; } }
过滤器类
public class SecurityFilter extends HttpServlet implements Filter { /** * */ private static final long serialVersionUID = 920198400163140364L; private FilterConfig filterConfig; private Logger logger = Logger.getLogger(getClass()); public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain filterChain) throws IOException, ServletException { // TODO Auto-generated method stub NewCarBrandConfig config = new NewCarBrandConfig(); String expiration = config.getExpiration(); String signature = config.getSignature(); String target = ""; try{ target = SecurityUtil.doMessageDigest(expiration); } catch(Exception e){ e.printStackTrace(); } if(!signature.equals(target)){ logger.warn("不合法的授权文件!"); return; } else{ Date today = new Date(); Date targetDay; try { targetDay = ToolUtil.getDateFromString(expiration,"yyyy-MM-dd"); if(today.after(targetDay)){ logger.warn("授权文件已过期!"); return; } } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } filterChain.doFilter(arg0, arg1); } public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub this.filterConfig = arg0;
配置文件
expiration=2012-10-09 signature=fd23826ef02908bf7404839a32ae44b4
说明:这只是一个变通的解决办法,因为当授权文件不合法或者授权文件过期时,并没有停止程序运行,只是通过让过滤器强制返回,使用户在访问系统时只得到一个空页面,程序还在后台运行,但用户不能使用。
相关推荐
今天给大家介绍的这款小软就有一个神奇的功能,就是能让这些有倒计时的软件能永不过期!就像时间停止一样。因为他们的原理是在启动某个程序之前,先自动把系统的时间改成未过期前的某一天,当程序检查时间时,时间...
【神器2】 破解软件时间限制!收费软件无限试用!永久试用收费软件、破解软件时间限制。
//取得运行时系统日期 try //创建注册表,有该键则读取,无则创建 Reg:=Tregistry.Create ; Reg.RootKey :=Hkey_local_machine; KeyName:=‘SoftwaregrjsExample‘; if Reg.OpenKey(KeyName,true) then begin ...
讲述如何实现日期限制、次数限制、最后试用期限制、软件启动后的执行时间限制、nag窗口限制、各类破解工具的介绍和对工具的应用,以及如何实现对这些工具的反跟踪;介绍如何用硬件系列号、用户名作为加密依据进行...
vc++ 8.00 c++ winapi 设置注册表设置软件使用期限
为您的软件产品创建试用版 设置过期日期 限制试用天数 限制试用次数 限制运行时间 创建部分功能的试用版 试用版轻松转变为完整版 软件产品许可方式 永久有效(无过期日期) 按时间限制(例如,您...
设置试用版过期日期 设置安装后可使用的天数 限制使用次数 限制每次使用的时间不超过多少分钟 限制试用版功能 支持试用版升级到完全授权版本 永久授权(终生许可证) 阶段授权(即租用软件) 使用次数授权(即软件...
Zprotect是新一代的软件加密保护系统,拥有多项革命性的...使用 Zprotect ,您可以轻松为您的应用程序添加试用次数、试用天数、试用日期和试运行时间等限制;这样您的客户就可以全功能评估您的软件产品,增大购买意向
Zprotect是新一代的软件加密保护系统,拥有多项革命性的...使用 Zprotect ,您可以轻松为您的应用程序添加试用次数、试用天数、试用日期和试运行时间等限制;这样您的客户就可以全功能评估您的软件产品,增大购买意向
Zprotect1.4.8 经过长期测试现在正式发布,稳定性和兼容...使用 Zprotect ,您可以轻松为您的应用程序添加试用次数、试用天数、试用日期和试运行时间等限制;这样您的客户就可以全功能评估您的软件产品,增大购买意向。
o 为您的软件产品创建试用版 + 设置过期日期 + 限制试用天数 + 限制试用次数 + 限制运行时间 + 创建部分功能的试用版 o 试用版轻松转变为完整版 o 软件产品许可方式 + 永久有效(无过期日期) + 按时间...
设置试用版过期日期 设置安装后可使用的天数 限制使用次数 限制每次使用的时间不超过多少分钟 限制试用版功能 支持试用版升级到完全授权版本 永久授权(终生许可证) 阶段授权(即租用软件) 使用次数授权(即软件...
5、限制许可文件的使用以限制试用期限,实现基于订阅/时间的许可期限 6、通过自有的许可服务器验证/激活许可文件 全面的许可管理 1、管理您的产品、客户和销售 2、通过License Tracker跟踪许可的创建/请求 3、ASP ...
开发商.NET Reactor是一款功能强大的代码保护以及许可授权管理系统软件,主要用于开发人员保护其.NET软件程序,.NET Reactor支持所有支持.NET编译的程序开发语言。控件中国网是.NET Reactor在中国正式的授权销售商,...
如有任何违反此类禁止的行为,您的“软件”许可将立即被终止。 此“软件”的录制、转换、播放和下载功能仅旨在用于公共领域或完全许可的内容和内容创建工具。 您可向第三方申请专利、版权或其它许可,以便创建、...
帮助中小型旅游企业实现管理,应用了新一代的B/S结构,巧妙地结合了酒店、机票、线路、景区、会员等多种功能于一体,它以浏览器为软件界面的导航式操作,快速完成日常管理中的会员,订单等操作,并结合准确、高效的...
211.5.2 试用天数限制功能 251.5.3 试用日期限制功能 311.5.4 执行时间限制功能 361.5.5 NAG窗口提示限制 371.6 专家点拨:常见问题解答 42第2章 常用代码分析工具 432.1 初识PE格式文件 442.1.1 PE格式文件概述 442...
191.5 试用期限制功能 211.5.1 试用次数限制功能 211.5.2 试用天数限制功能 251.5.3 试用日期限制功能 311.5.4 执行时间限制功能 361.5.5 NAG窗口提示限制 371.6 专家点拨:常见问题解答 42第2章 常用代码分析工具 ...
您可以通过限制运行时间、使用次数、过期日期、机器码绑定等等授权限制来控制软件试用。 Safengine使用强加密算法保证授权模块的安全,如果没有您提供的合法授权,破解这需要数年时间穷举您的软件的解密密钥。 编辑...