易截截图软件、单文件、免安装、纯绿色、仅160KB

运用加密技术保护Java源代码

       运用加密技术保护Java源代码
       
java
程序的源代码很容易被别人偷看。只要有一个反编译器,任何人都可以分析别人的代码。本文讨论如何在不修改原有程序的情
况下,通过
加密
技术保护源代
码。
  一、为什么要
加密


  对于传统的C或C++之类的语言来说,要在Web上保护源代码是很容易的,只要不发布它就可以。遗憾的是,Java程序的源代码很容易被别
人偷看。只要有一个反编译器,任何人都可以分析别人的代码。Java的灵活性使得源代码很容易被窃取,但与此同时,它也使通过加密保护代码变得相对容易,
我们唯一需要了解的就是Java的ClassLoader对象。当然,在
加密
过程中,有关
java
Cryptography Extension(JCE)的知识也是必不可少的。
  
  有几种技
术可以“模糊”
java
类文
件,使得反编译器处理类文件的效果大打折扣。然而,修改反编译器使之能够处理这些经过模糊处理的类文件并不是什么难事,所以不能简单地依赖模糊技术来保证
源代码的
安全

  
 
 我们可以用流行的加密工具
加密

用,比如PGP(Pretty G
OO
d Privacy)或GPG(GNU Privacy
Guard)。这时,最终用户在运行应用之前必须先进行解密。但解密之后,最终用户就有了一份不加密的类文件,这和事先不进行
加密
没有什么差别。
  
  Java运
行时装入字节码的机制隐含地意味着可以对字节码进行修改。JVM每次装入类文件时都需要一个称为ClassLoader的对象,这个对象负责把新的类装入
正在运行的JVM。
jvm

ClassLoader一个包含了待装入类(比如
java
.lang.Object)名字的字符串,然后由ClassLoader负责找到类文件,装入原始数据,并把它转换成一
个Class对象。
  
  我们可以通过定制ClassLoader,在类文件执行之前修改它。这种技术的应用非常广泛——在这里,它
的用途是在类文件装入之时进行解密,因此可以看成是一种即时解密器。由于解密后的字节码文件永远不会保存到文件系统,所以窃密者很难得到解密后的代码。
 
 
  由于把原始字节码转换成Class对象的过程完全由系统负责,所以创建定制ClassLoader对象其实并不困难,只需先获得原始数据,
接着就可以进行包含解密在内的任何转换。
  
  Java 2在一定程度上简化了定制ClassLoader的构建。在
java

2中,loa


相关文档:

IBM FileNet Content Java API 简介

2008 年 6 月 24 日
原文地址: http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0806wangys/
本文介绍 IBM FileNet P8 4.0 Platform 提供的 Content Java API。首先对 FileNet P8 Content Engine 和 API 进行概要介绍, 并说明了一些基本概念,随后详细介绍了 FileNet Content Engine提供的基于 EJB ......

JAVA开发者最常去的20个英文网站

1.[http://www.javaalmanac.com]  Java开发者年鉴一书的在线版本. 要想快速查到某种Java技巧的用法及示例代码, 这是一个不错的去处.
2.[http://www.onjava.com]  OReilly的Java网站. 每周都有新文章.
3.[http://java.sun.com]  官方的Java开发者网站  每周都有新文章发表.
4.[http://www.developer.com/java]  ......

java的String类,equals函数和比较操作符==的区别


整理关于java的String
类,equals函数和比较操作符的区别

初学 Java
有段时间了,感觉似乎开始入了门,有了点儿感觉但是发现很多困惑和疑问而且均来自于最基础的知识折腾了一阵子又查了查书,终于对 String
这个特殊的对象有了点感悟大家先来看看一段奇怪的程序:
public class TestString {  ......

java List 排序 Collections.sort() 对 List 排序

class User {
String name;
String age;

public User(String name,String age){
this.name=name;
this.age=age;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(St ......

JAVA编程规范

命名规范
 
定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,减少项目组中因为换人而带来的损失。(这些规范并不是一定要绝对遵守,但是一定要让程序有良好的可读性)
 
Package 的命名
Package 的名字应该都是由一个小写单词组成。
 
Class 的命名
Class 的名字必须 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号