现在做了一个swing 程序,在加密方面有下面几个问题
1 有什么好的方法加密代码
2 怎么防止生成好的jar 在不同机器上复制
3 怎么实现授权,比如 一台机器只能用一个月,过了就要新申请序列号 等
------解决思路----------------------
加密代码一般是用代码混淆器,有很多种,好的当然是要收钱的,比如,免费的可能只是替换变量成为无意义的符号(当然只能替换自己的代码中的符号,当某个类实现了其它像JRE中的接口时方法名当然不能变了,是自己的类的话,就可以把接口和实现类中的方法全部替换成只有1到2个字母的名称让人难以理解。好的混淆器还有一个功能就是替换变量和方法名时故意替换成Java的关键字(比如 if else)这样的话就算反编译回来去掉部分逻辑后重新编译都不会成功的,需要手工把它们修改成正常状态,有时候因为引用关系很多手工改很花时间,加大破解难度。下面 JDK 6 开始的 Instrument 本身也可以对 class 文件本身加密,那是不是要来个数字签名证书来加密呢,只有用户拿自己的用户标记到你的服务器来来取一份东西去解密,这些全部要用DLL实现,用Java的话,这段又不知道如何保证安全了。
防止复制当然一般是读取机器的主要的不可拔插的硬件的标记(比如主板序列号,硬盘编号),我以前花10块钱买份手写字体后面换主板就用不了了,当然这都需要自带一份DLL来读取这些资料,一般读取MAC 的办法太容易失效了,因为换个网上才30块钱,而且还可以通过软件直接修改MAC地址。
要授权一般连接到服务器验证比较好。
不管怎么说,理论上说没有不能反编译的代码,只是反编译的难度各有不同,所花费的成本大小不同罢了,如果买一份只需要200块钱,而反编译它却花了1 个月时间,那就不如直接买了呗。