如何让你的应用软件有试用日期的限制
来源:互联网 发布:spring高级编程 pdf 编辑:程序博客网 时间:2024/05/18 02:48
很多成型的应用软件都有试用版和正式版之分,试用版一般都有功能上的限制,同时也有使用次数或使用期限的限制。要使试用版成为正式版,有些软件是要求你拿注册码注册,还有一些软件是通过授权文件来区分试用版和正式版,从试用版变成正式版,只是把授权文件换一下而已。一般来说,桌面软件会采用注册码的方式较多,而服务器端软件采用授权文件的较多,授权文件一般会将要限制的信息,比如并发数、最后日期等明文、密文一块保存。
本人在做项目过程中采用了一种变通的解决方式,让我的应用有了使用日期的限制:
1、将要限制的日期采用MD5加密,连同明文的日期一起放在一个配置文件里
2、在程序中加一个过滤器,读取这个配置文件,通过对读取到的明文重新进行加密,和从配置文件里读取到的密文进行比较
3、如果两者不一致,表明授权文件遭到篡改,不再继续提供服务
4、如果两者一致,继续比较从配置文件里读取的限制日期和当前日期,如果当前日期晚于限制日期,表明使用期限已到,不再继续提供服务
5、否则继续提供服务
相关代码如下:
加密类
public class SecurityUtil {//采用这个类将明文加密/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubString 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 stubNewCarBrandConfig 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 blocke.printStackTrace();}}filterChain.doFilter(arg0, arg1);}public void init(FilterConfig arg0) throws ServletException {// TODO Auto-generated method stubthis.filterConfig = arg0;}}
配置文件
expiration=2012-10-09signature=fd23826ef02908bf7404839a32ae44b4
说明:这只是一个变通的解决办法,因为当授权文件不合法或者授权文件过期时,并没有停止程序运行,只是通过让过滤器强制返回,使用户在访问系统时只得到一个空页面,程序还在后台运行,但用户不能使用。
- 如何让你的应用软件有试用日期的限制
- 如何让你的BI有思想?
- 让iPhone物有所值的应用软件
- 如何让你的一天有36小时
- 软件试用次数的限制
- 如何安装Linux的应用软件
- 如何删除剽悍的应用软件
- 如何在ppt 插入你想要试用的模版
- Android Market销售你的应用软件
- 【记录】想办法让试用30天后过期的Source Insight可以继续重新开始有30天的试用
- 让你更有创意的几条小贴士
- 让你的优盘也有背景!
- 让你也有百万富翁的生活
- 让你的照片更有feel!
- 让你的App有声音
- 让你的程序有管理员权限
- 怎样用VC限制软件的试用次数
- 怎样用VC限制软件的试用次数
- Objective-C中的@property和@synthesize用法
- Android获取并显示图片
- 给Android源码增加一个项目
- GirdView模板列鼠标停留显示层
- svn 安装。。。myeclipse 6.5 and 8.6
- 如何让你的应用软件有试用日期的限制
- Android中设置控件可见与不可见详解
- 曾经中国最伟大的语文教材
- java程序员必知的8大排序
- c++ 头文件的作用
- 关于ubuntu12.04中出现乱码的解决
- js中的preventDefault和stopPropagation
- 目标检测的图像特征提取之(二)LBP特征
- tomcat内存溢出