- 浏览: 606446 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (263)
- 默认类别 (0)
- STRUTS HIBERNATE (2)
- STRUTS SPRING HIBERNATE (18)
- SOA/WEB service (8)
- PORTAL (3)
- 想法和设计思想 (17)
- SMARTEAM 二次开发 (0)
- ACTIVEBPEL (0)
- ERP (0)
- EAI (0)
- 甲醇汽油 (0)
- webwork freemarker spring hibernate (1)
- 工作流技术研究 (1)
- ROR (5)
- 搜索引擎 (7)
- 3.非技术区 (0)
- 1.网站首页原创Java技术区(对首页文章的要求: 原创、高质量、经过认真思考并精心写作。BlogJava管理团队会对首页的文章进行管理。) (2)
- 2.Java新手区 (2)
- 4.其他技术区 (0)
- ESB (1)
- Petals ESB (6)
- 手机开发 (1)
- docker dedecms (1)
最新评论
-
w630636065:
楼主,期待后续!!!!!!!!
生成文本聚类java实现 (2) -
zilong513:
十分感谢楼主,期待后续。
生成文本聚类java实现 (2) -
qqgoodluck:
可否介绍一下您的选型依据,包括Petal ESB与MULE等E ...
Petals ESB 简介 -
jackiee_cn:
写的比较清楚,学习了
Petals ESB 集群实战 -
忙两夜:
你好,能发一下源代码吗
抓取口碑网店铺资料
有的时候,客户会提出这样的需求,他们的应用能不能当产品一样的出售呀,如果能够保证每一个买家有一个唯一的限制的话,这将是一个不错的想法.
为了能够达到这个目的,我就想了一个很弱智的实现方案.就是在应用启动时加入一些参数,并做一个检验,如果检验失败后就启动失败,这样的话,这个应用就不能正常使用.
好了.就按照这个思路来做一个实现,然后再做扩展.因为我们使用Spring的MVC框架,我就想把它加载到Spring的启动配置文件当中.实现如下,一共有三个个文件,一个JAVA文件,一个是加入到Spring配置文件当中的片段.另外是一个Licence.properites文件.
Java文件:
public class LicenceManager { private final int MAX_USER = 10; private String username = "";//用户名 private String organization = "";//公司名 private String licence;//生成的md5码 private boolean valid; /** * 当然,如果你有严格的限制的话,你可以加入网卡的唯一码, * 或者更牛B的限制手段! **/ @Resource private UserDAO userDAO; //注入完成之后需要执行的方法上,以执行任何初始化 @PostConstruct public void validate() { String calcLicence = DigestUtils.md5Hex(username + organization); if (calcLicence.equals(licence)) valid = true; } public LicenceManager() { } //当然也可以加入对最多用户的限制 public boolean checkLicence() { if (valid || userDAO.getCountAll() < MAX_USER) return true; return false; } public void setUsername(String username) { this.username = username; } public void setOrganization(String organization) { this.organization = organization; } public void setLicence(String licence) { this.licence = licence; } public boolean isValid() { return valid; } }
Spring的配置文件:
<bean id="licenceManager" class="com.corticon.dialogs.designer.licence.LicenceManager"> <property name="username" value="${licence.username}"/> <property name="organization" value="${licence.organization}"/> <property name="licence" value="${licence.licence}"/> </bean> <context:property-placeholder location="classpath:Licence.properties" />
另外Licence.properites示例如下:
licence.username=foobar licence.organization=foobar.com licence.licence=401303938298f18f397e6b0125159927
评论
26 楼
goodfifa08
2009-06-08
主要为了测试
25 楼
zhaomingzm_23
2009-06-08
个人觉得,技术中加入了licence或者copyright是对开发者的尊重。和对劳动成果的肯定。
但一些基于这些劳动成果的二次开发也加上诸多的混淆或者限制,就好比拿了别人的东西,但写上自己的名字一样令人唾弃。
就像李开复说的技术之有开源才有生命力。
open everyThing!
但一些基于这些劳动成果的二次开发也加上诸多的混淆或者限制,就好比拿了别人的东西,但写上自己的名字一样令人唾弃。
就像李开复说的技术之有开源才有生命力。
open everyThing!
24 楼
linginfanta
2009-06-06
省省吧,有些应用,源代码都要把人看疯,还用得着混淆?
23 楼
yimlin
2009-06-05
supercode 写道
要想从技术上解决这个问题是比较困难的。可能的办法有
1. 让客户觉得仅得到软件意义不大,这个软件需要一定的部署,调优,培训,实施这些后期服务,这取决于软件的类型。
2. 做成服务,某些关键环节在自己的服务器,或是全在服务器上,这种SAAS目前来说,还有待于进一步发展,这取决于业务类型
1. 让客户觉得仅得到软件意义不大,这个软件需要一定的部署,调优,培训,实施这些后期服务,这取决于软件的类型。
2. 做成服务,某些关键环节在自己的服务器,或是全在服务器上,这种SAAS目前来说,还有待于进一步发展,这取决于业务类型
这个是体制外同学的话,听着都正确,就是当下没有帮助。
若对于银行/保险等金融企业的业务系统本身就是定制化的,就算把源代码拿到别的企业也不敢用。
从产品到服务本身是一个很大的跨越,是组织层面的。
22 楼
supercode
2009-06-04
要想从技术上解决这个问题是比较困难的。可能的办法有
1. 让客户觉得仅得到软件意义不大,这个软件需要一定的部署,调优,培训,实施这些后期服务,这取决于软件的类型。
2. 做成服务,某些关键环节在自己的服务器,或是全在服务器上,这种SAAS目前来说,还有待于进一步发展,这取决于业务类型
1. 让客户觉得仅得到软件意义不大,这个软件需要一定的部署,调优,培训,实施这些后期服务,这取决于软件的类型。
2. 做成服务,某些关键环节在自己的服务器,或是全在服务器上,这种SAAS目前来说,还有待于进一步发展,这取决于业务类型
21 楼
steeven
2009-06-03
我觉得精华在签名那里.别的就不要多想了. 防君子不防小人的.
20 楼
xyh
2009-06-02
反编译不用怕的,我们有部分CLASS文件是用混淆器进行混淆的,经过混淆的类名、变量名和方法名为O00O0O00O这样的名字(字母O和数字0的组合),就算用jad反编译也看不到源码
19 楼
chenhua_1984
2009-06-02
chenhua_1984 写道
设置一个环境变量,指定一个值,一个客户一个,这样就可以了,我们的项目就是这么做的。假若是windows系统,
那么采用set name=value,假如是linux 则用export name=value,系统在启动的时候就读这个值,假如值设置的部队或则没有,就启动不起来!
那么采用set name=value,假如是linux 则用export name=value,系统在启动的时候就读这个值,假如值设置的部队或则没有,就启动不起来!
18 楼
chenhua_1984
2009-06-02
设置一个环境变量,指定一个值,一个客户一个,这样就可以了,我们的项目就是这么做的。假若是windows系统,
那么采用set name=value,假如是linux 则用export name=value
那么采用set name=value,假如是linux 则用export name=value
17 楼
iaimstar
2009-06-02
代码写的烂,你反编译了也看不懂
16 楼
zhongli
2009-06-02
不谈破解。我觉得最重要的是要防copy,然后包含模块时间之类的。
15 楼
lnaigg
2009-06-02
license管理类也要注入?开玩笑了。
做共享软件的人的经验是:把验证的那段代码随机嵌入到程序各个模块中,注意不是调用一个函数或类来判断是否合法,而是整个判断的流程都一起粘贴。
不管你的算法写得多复杂,只要调用了个函数“checkLicence()”什么的来判断,那意味着所有的算法都是个空壳子。
做共享软件的人的经验是:把验证的那段代码随机嵌入到程序各个模块中,注意不是调用一个函数或类来判断是否合法,而是整个判断的流程都一起粘贴。
不管你的算法写得多复杂,只要调用了个函数“checkLicence()”什么的来判断,那意味着所有的算法都是个空壳子。
14 楼
zhaomingzm_23
2009-06-02
不错,通过validate()校验。isValid()提供依据。
ps:删除配置? 呵呵,对于拿到了程序源码,再来讨论有什么意思。破解和版权本来就是小偷和法律的关系。
ps:删除配置? 呵呵,对于拿到了程序源码,再来讨论有什么意思。破解和版权本来就是小偷和法律的关系。
13 楼
ajf8
2009-06-02
新一代java敏捷开发平台ajf3.0有Licence限制的,供参考
对jar包混肴了 Licence为ajf.lic
一个时间一个key md5过地 改下代码可支持MAC的
要破解还是得费点力气的哦
demo下载
http://hi.baidu.com/ajf8/blog/item/d8861435117ff23d5ab5f5fc.html
只是供大家耍耍玩玩哦
对jar包混肴了 Licence为ajf.lic
一个时间一个key md5过地 改下代码可支持MAC的
要破解还是得费点力气的哦
demo下载
http://hi.baidu.com/ajf8/blog/item/d8861435117ff23d5ab5f5fc.html
只是供大家耍耍玩玩哦
12 楼
hocus
2009-06-02
1 必须通过license中的加密信息 来作为key,启动应用,否则失败。
2 加密信息由固定机器的硬件,比如mac和ip地址来唯一确定。并且进行单向加密
3 代码使用混淆器混淆
4 服务器端对客户端的信息进行管理,对验证过的签发令牌。否则不予响应。
2 加密信息由固定机器的硬件,比如mac和ip地址来唯一确定。并且进行单向加密
3 代码使用混淆器混淆
4 服务器端对客户端的信息进行管理,对验证过的签发令牌。否则不予响应。
11 楼
kjj
2009-06-01
java上保持lience比较难吧,反编译太容易了!!
10 楼
whaosoft
2009-06-01
没有看出来怎么做的licence限制。
9 楼
grandboy
2009-06-01
我的license文件格式如下:
然后配置一个启动类,读这个文件,如果这个文件没有,或者要读的信息没有就报错。读这个license文件之后,就把信息放在一个静态类里。既然题目是简单解决方案,这样就挺简单的。其实就是防君子不防小人。如果要实现的更好一点就把所有重要类都加密,然后用一个classloader使用dll来解密相应类。这样如果做得好的话,一般class比较难反编译。但是我们没有这样做,只是简单的混淆了一下。
<licenses> <license> <product>Product Name</product> <option></option> <version>1.0</version> <notices>Copyright 2005-2007</notices> <licensee>UserName</licensee> <street></street> <city></city> <state></state> <postalCode></postalCode> <country></country> <start>19.07.2007</start> <expiration>19.09.2010</expiration> <usercount>20</usercount> <digest>tRJB36DajfOr0Kesgpo28NnrBCw=</digest> <signature>RszB27jpYrSVJL0VG6FmgYsVpwbEo5xvmFxbyZz6RX1fHUi9Z0JJEagD1Irw==</signature> </license> </licenses>
然后配置一个启动类,读这个文件,如果这个文件没有,或者要读的信息没有就报错。读这个license文件之后,就把信息放在一个静态类里。既然题目是简单解决方案,这样就挺简单的。其实就是防君子不防小人。如果要实现的更好一点就把所有重要类都加密,然后用一个classloader使用dll来解密相应类。这样如果做得好的话,一般class比较难反编译。但是我们没有这样做,只是简单的混淆了一下。
8 楼
josen
2009-06-01
地球上有专门做这个的厂家,如safeNet or wibu
7 楼
kunee
2009-06-01
这个只能防君子。。。。。
要是我直接编译一个CLASS覆盖
要是我直接编译一个CLASS覆盖
发表评论
-
Eclipse当中两种远程调试方法
2011-01-05 11:17 2278基于Maven管理的项目,在eclipse当中有两种调 ... -
[翻译]使用Maven创建google Appengine
2010-05-06 15:35 2184原文请参考:http://www.salientpoin ... -
Not must be hibernate.properties or hibernate.cfg.xml
2010-03-05 13:47 1307Sometimes, Custom have ext ... -
使用yourkit java profiler进行性能分析
2010-01-28 17:00 4462说明: YourKit Java Profile ... -
试用Hibernate二级缓存Ehcache
2010-01-28 15:50 1861Hibernate supports several t ... -
优化hibernate的一招。
2007-11-09 10:20 1668原来的程序: java 代码 List Lre ... -
JSF+A4J+Spring调用ORACLE存贮过程的拙作
2007-08-17 09:35 2820近一周写了一个简单的工具,本工具是通过Spring ... -
hibernate3.2上使用UserType范例
2007-07-27 13:57 3200仔细看看hibernate的DOC发现不少惊奇的东东 ... -
三个JAVA文件完成jsf+spring+hibernate的集成.
2007-07-16 17:43 3673呵呵,本文章只贡献给哪些走捷径的coder, 开发工具:mye ... -
Myeclise5.5自动生成spring2.0+hibernate3.2+jsf1.1时的错误
2007-07-16 15:25 11149我使用myeclipse5.5分别加入hibernate3.2 ... -
ORACLE SQL语句in超过1000个的处理方法
2007-06-25 16:21 11265表现的情况: sql 代码 Hibernate ... -
EXCEL导入数据库及数据库数据导出到EXCEL
2007-05-18 17:01 16038很久没有发BLOG,呵呵,是因为最近在帮助朋友在做一个项 ... -
近期完成的一个较大的JS验证
2007-03-02 11:18 3611呵呵,近期偶完成的一个较大的JS验证,行家一看就 ... -
使用SSH+Freemarker做新闻发布系统
2007-02-07 17:18 9083最近, ... -
三个JAVA文件完成你的MVC应用
2006-09-25 16:23 5723只需要你三个JAVA类和两个配置文件,就可以完成你的MVC应用 ... -
struts标签,请你走开(系列一)
2006-09-25 16:07 4935在项目开发的很多 ... -
用二维数组管理好你零乱的状态、分类和其它常用选项
2006-09-25 15:01 4017在大家的编码过程当中,有没有遇到过这么一种情况,很多零乱的状态 ...
相关推荐
请确保JAVA_HOME设置正确,如C:\Program Files\Java\JDK(注意最后没有\) 请按以下步骤运行此演示程序 第一步,运行run.bat部署演示环境 第二步,执行命令"java -jar 50194.jar"运行此演示程序,效果如附图1,2所示 ...
软件Licence应用实例,主要实现软件客户端授权使用,使用期限限制等。 开发语言:C# 开发工具:.NET6.0 涉及技术:电脑硬件信息获取,非对称加密,文件读写等。 具体可参考相关博文
.NET软件Licence应用实例 实例说明 开发技术:C# 开发工具:Visual Studio 2022 开发环境:.Net 6.0 使用说明 客户端测试工具,获取电脑信息 发送到管理员,用Licence生成工具,生成Licence 验证成功,正常使用;...
C#3种软件licence开发源代码
开发者可以使用这些许可证文件来激活和限制他们所开发的GIS应用程序的功能。 ArcGIS Engine 9.2的许可证配置文件("ArcGIS 92 ecps.rar")可能包含了不同级别的许可证,例如基础版、标准版或高级版,每种版本支持的...
ADS1.2 licence 绝对可用
Quartus最全licence,支持quartus所有功能。测试可以支持17.1。
本篇文章将详细解读一个名为"licence-reco.zip"的实习大作业,它涵盖了Pyqt5界面编程、车牌识别以及TCP通信等核心知识点,通过这个项目,我们可以深入理解这些技术的实际应用。 首先,Pyqt5是一种广泛使用的Python...
1. 下载并解压:首先,你需要下载名为“ORCAD_10.3_Licence生成程序”的压缩包文件,解压后获取到生成器程序。 2. 运行程序:双击运行生成器,按照界面提示进行操作。通常,你需要提供一些必要的信息,如机器码(这...
vivado15.4licence,测试可用vivado15.4licence,测试可用vivado15.4licence,测试可用vivado15.4licence,测试可用vivado15.4licence,测试可用vivado15.4licence,测试可用vivado15.4licence,测试可用vivado15.4...
标题“jrebel licence”指的是JRebel的许可证信息,这是一个流行的Java开发工具,它允许开发者在不重新部署应用的情况下看到代码更改的效果。JRebel极大地提升了开发效率,因为开发者无需等待应用服务器重启就能测试...
微信硬件平台设备信息获取软件,输入AppID/Appsecret/产品编码,点击获取信息即可获取Access_token Deviceid Licence信息。 本软件不会获取个人任何信息,不会有任何广告。 使用后再文件夹中会产生Licence.dat,用于...
Sublime Text 3是一款备受程序员喜爱的代码编辑器,尤其在Web开发领域中广泛应用。它以其高效、轻量级且功能丰富的特性赢得了众多开发者的青睐。尽管Sublime Text 2是收费软件,但它允许用户无限期试用,不过在正式...
arcgis9.1 sde licence.ecp是arcgis9.1 sde的许可文件
亲自测试可用的XILINX_ISE13.2 licence,欢迎下载!
sourceinsight4.exe覆盖安装目录向相同名字的文件. 打开source insight 选择import a new license file,选取licence文件si4.pediy.lic。 enjoy.
Licence file for Intel Visual Fortran 9 and Intel Visual Fortran 11.1
Vivado的许可证还包括时间限制,这意味着许可证可能有有效期,过期后需要更新或重新获取。此外,Xilinx还提供了浮动许可证系统,允许多台计算机共享一组许可证资源,这对于团队协作尤其有用。 在实际工程应用中,...
halcon 12 6月份的licence ,新鲜出炉!!!祝大家学习顺利!!
QuartusII 8.1的Licence文件,支持所有IP核和所有器件,一般的Licence文件支持的IP有限。下载后仍然需要把网卡MAC填入,相信需要它的人应该都会改。