项目本来是用混淆java代码的方式去处理的,这样可以防止源代码外泄,但是经过混淆后的代码一旦抛出异常,堆栈的行数却完全和原先的不一致,查错会非常麻烦,不知各位有什么更好的加密方法?
我打算对jar包进行DES加密,然后类载入时再进行动态解密,不知各位有什么经验或者办法,希望得到高手指教,谢谢咯!

解决方案 »

  1.   

    楼主看下这个:
    http://hi.baidu.com/fan8888/blog/item/25f5ad01aae9f180e950cd94.html
                                 <!-- 保持所有的属性(过时的方法,文件名,行号、本地变量表),在系统允许过程中,可能会发生错误信息,
                                 如果不保存这些信息,出错时很难跟踪代码,为方便调试保留了这些信息               -->
                                 <attribute name="Deprecated, SourceFile, LineNumberTable, LocalVariableTable">
                                         <patternset refid="catic" />
                                 </attribute>
    这个问题也没有很好的解决方法:如果混淆后有问题,那么拿没混淆的代码再现时,就知道了,像有的卫星或设备,发射一个,还要在地面有同样的一个做调试一样的道理。
      

  2.   

    你只要自己实现一个ClassLoader就可以了,实现其实很简单,就是把类全限定名变成本地路径,然后查找class文件并载入内存中,你在其中嵌入解密过程即可。
    这样加密其实是有意义的,你可以将密钥分离出来,只有拥有密钥的情况下程序才能运行,通过这种授权,可以更好的保护代码。
      

  3.   

    DES 解密需要密钥,这个密钥肯定存在某个地方,因此这种保护源代码的方法无济于是!
      

  4.   

    这种方法太垃圾了,稍微懂点java的人只要反编译你的classloader,立马就可以解密你的jar,然后反编译
      

  5.   

    曾经我做过,用native方法写的。
      

  6.   

    http://hi.baidu.com/fan8888/blog/item/25f5ad01aae9f180e950cd94.html