第三章 应用范例
在实际应用中,建议新的启动程序继续采用Java.exe的参数调用格式, 即java [-options] class [args...],这样的话,一方面程序在开发版本(非加密)和发布版本(加密)时的调用方式就保持一致了,便于别人的理解,另一方面启动程序的制作也简单多了,只需改动java.c中的LoadClass方法了。
下面是一般应用的示意图:
如果调用的方式是这样的:class1调用class2,而由class2调用class3,其中class2有自己定制的ClassLoader(非class3所用的ClassLoader),则这时应该在class2和class3之间加一层interface,由interface调用class3相应的ClassLoader来装载class3, 而interface本身则不能加密。这种形式的典型应用是Tomcat上的web应用,Tomcat装载servlet类时,是采用自己的ClassLoader来装载的, 如果对servlet加密,Tomcat则在装载servlet时不会装载成功,必须采用interface的方式!下面则是其应用示意图:
第四章 应用范围
由于解密需要一定的时间,如果不加区分的全部进行加密处理,势必会影响到程序的速度和响应。所以应该在需要加密的地方才加密,比方说,用户密码验证,专利算法,或者是数据库密码等等,这样的才不会导致系统的性能下降。
要达到以上目的, ClassLoader必须对class加以判断,非加密的class调用JVM系统ClassLoader的LoadClass函数, 而对加密的才加以解密处理。建议:ClassLoader最好可配置!