|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ruby里有这些工具吗?又要简单多少?我没有用过这两门语言,我估计在这些语言力没有很统一的这种标准,或者根本就没有提供。加密|把持|计划1.版权声明
本文是关于怎样经由过程序列号来加载加密的class文件的论述。本文所说起的Resinhessian是Caucho公司的注册产物称号,其版权规caucho一切。本文能够转载,可是必需说明作者的Blog地点:http://blog.csdn.net/oldjavaman2.本文的合用对象
作为手艺职员,本文的手艺细节触及到Java言语的基本常识,您在浏览前应当懂得Java静态装载Class的机制,和惯例的Java加密的相干常识,同时本文假定您已具有开辟web的基础才能,懂得jsp和servlet的运作历程。3.如何浏览
你能够鄙人面地点下载到本文所用到的Jar文件和加密工具http://www.collegesoft.com.cn/download/licenceClient_1.0.3.jar加密工具的下载:http://www.collegesoft.com.cn/download/encryption.exe关于序列号的天生部分,鉴于回护公司产物的思索就不再公然公布了,有乐趣的同仁能够用mail和我交换。4.概述
4.1.加密Java源码的缘故原由
Java源代码经由编译今后在JVM中实行。因为JVM界面是完整通明的,Java类文件可以很简单经由过程反编译重视新转换成源代码。因而,一切的算法、类文件等都能够以源代码的情势被公然,使得软件不克不及遭到回护,为了回护产权,一样平常能够有以下几种办法: (1)"含混"类文件,把文件的称号和办法换成000OOoo的体例,固然只需你有充足的耐烦,将这些编码转换成本人能够看懂的代码,并不是难事。 (2)盛行的加密工具对源文件举行加密,好比PGP(PrettyGoodPrivacy)或GPG(GNUPrivacyGuard)。这时候,终极用户在运转使用之前必需先辈行解密。但解密以后,终极用户就有了一份不加密的类文件,这和事前不举行加密没有甚么不同。 (3)加密类文件,在运转中JVM用定制的类装载器(ClassLoader)解密类文件。Java运转古装进字节码的机制隐含地意味着能够对字节码举行修正。JVM每次装进类文件时都必要一个称为ClassLoader的对象,这个对象卖力把新的类装进正在运转的JVM。JVM给ClassLoader一个包括了待装进类(比方java.lang.Object)名字的字符串,然后由ClassLoader卖力找到类文件,装进原始数据,并把它转换成一个Class对象。 用户下载的是加密过的类文件,在加密类文件装进之时举行解密,因而能够当作是一种立即解密器。因为解密后的字节码文件永久不会保留到文件体系,以是保密者很可贵到解密后的代码。 因为把原始字节码转换成Class对象的历程完整由体系卖力,以是创立定制ClassLoader对象实在其实不坚苦,只需先取得原始数据,接着就能够举行包括解密在内的任何转换。4.2.Java暗码系统和Java暗码扩大
Java暗码系统(JCA)和Java暗码扩大(JCE)的计划目标是为Java供应与完成有关的加密函数API。它们都用factory办法来创立类的例程,然后把实践的加密函数托付给供应者指定的底层引擎,引擎中为类供应了服务供应者接口在Java中完成数据的加密/解密,是利用其内置的JCE(Java加密扩大)来完成的。Java暗码系统布局撑持供给商的互操纵,同时撑持硬件和软件完成。4.3.本文彩用的体例
我们接纳的是第三种体例,将class文件加密作为产物的刊行版本,可是为了让这个加密的体例能够在分歧的项目内里利用,又将这个解密的处置做成webservice的体例来举行.5.基础计划头脑
[img=552style=,322alt=]http://www.alixixi.com/uploadpic/2007-2/200728164423332.gif[/img]
这个历程能够分别成5个部分:
1)将加密的class文件传送到webService内里.2)由webService来检察Licence是内里,是不是有正当的信息,比如产物称号,版本,受权用户,已过时工夫等,有此决意是不是持续实行第3个步骤3)假如统统考证经由过程,将由webService前往一个解密的文件4)由当地的webService来装载这个class对象,5)机关成一个class的instance6.谁人文件应当被加密
在之前,实验将本人的API举行加密,可是作为API自己在公司外部刊行,这就请求我们每一个programmer在编写代码的时分必需人手一个Licence才能够举行一般的事情,为API的晋级和保护也带来极年夜的方便,为何?由于API不克不及作为一个Jar公布,只能以class的体例来公布.那末.我们应当加密的是甚么呢?在我们计划web程序的时分,一样平常的流程是,login然后在session或cookie内里纪录他的身份信息,比如她是一个甚么样的用户,是先生大概教员仍是办理员,同时,我们要纪录他具有甚么权限,每一个权限的操纵局限又是甚么?那末这个历程我们一样平常在用户上岸,和数据库毗连以后来举行的,这是一个庞大的逻辑操纵历程,,加密这个办法是一个好的设法,如许歹意的用户,即便把一切的其他class文件用jad来复原,也杯水车薪,除非他能够猜出你在login的时分究竟做了甚么。7.如何加密本人的java文件
7.2.文件的加密
加密我们的文件,我们接纳的是JCE的算法来举行的,详细的加密完成,我再次不再叙说,在google内里,你能够猎取n多的文章在形貌这个JCE的用法,关于我们的文件,已供应了一个windows的exe程序来之行,这个文件叫做encryption.exe你能够用以下命令来加密本人的文件c:>encryptionCencryptomyClass.class
如许就能够把你的文件做成Jad等工具没法反编译的文件了。
8.从LicenceCenter猎取的产物信息
不管再增加课程仍是,创建新的用户的时分,您都大概会有一个需求,我怎样晓得本人的产物受权给这个用户甚么样的信息呢,是不是同意他再创建一个课程大概增加一个客户?我们供应的jar内里能够办理你的狐疑:代码以下LicenceFactorylicenceFactory=newLicenceFactory();licenceFactory.getLicence("urProductName");
假如这个产物在考证中央没有注册序列号,将前往null;9.程序必要增添甚么设置
在licenceClient内里,体系必要读取licenceCenter的地点,在您的web使用公布的时分,必需将webService的地点编写成情况变量,在web.xml内里增添一段代码:<env-entry><env-entry-name>licence_service_url</env-entry-name><env-entry-value>http://192.168.2.212:8080/licenceCenter/LicenceService</env-entry-value><env-entry-type>java.lang.String</env-entry-type></env-entry>
你能够将白色的部分放在你的webserver上会见,假定看到以下界面,暗示考证中央已安装乐成10.关于考证中央的安装
考证中央的安装文件为licenceService1.0.1.zip在你的操纵体系内里解压在一个目次中。在你的Javawebserver内里设置一个使用,比如叫做:licenceCenter以Resin为例子:在httpd.conf内里加上一下代码:<web-appid="demo"app-dir="E:/licencescenter/webapp"><servlet-mappingurl-pattern=*.jspservlet-name=com.caucho.jsp.JspServlet/></web-app>
个中在你的这个使用中的web.xml文件必需包括<servletservlet-name="LicenceService"servlet-class="com.caucho.hessian.server.HessianServlet"><init-paramservice-class="com.collegesoft.licence.LicenceService"/><init-paramapi-class="com.collegesoft.licence.LicenceServiceStub"/></servlet><servlet-mappingurl-pattern="/LicenceService"servlet-name="LicenceService"/>
11.罕见成绩
Q:为何不间接在webService内里加载好一个Class,而是要在客户端来用classLoader来装载?A:良多的程序员问过我这个成绩,实在很复杂,你假如晓得classloader的机制,就晓得假定你扩大login的实例用到你的别的一个对象,比如OnlineUser,那末要在webService内里来装载你的类,我就必需具有你这个类,可是webservice内里是不晓得你将来是要用到甚么类的。Q:为何在redhat9上,会见考证中央会呈现中文乱码成绩?A:是因为redhat9的默许字符集不为GBK的原因。一样平常接纳将命令exportLANG=zh_CN.GBK加在resin服务启动文件中。
IDE是好。java中的IDE更是百花齐放,你用jbuilder能说jbuilder赶不上vs吗?用eclipse,netbeans也很舒服啊。我就不明白“稍微差一些”那一些是从哪里差来的。 |
|