重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Java .class 文件是高度抽象的, 因而反编译技术难度不大, 现行也有很多好用的工具. 所以, 不加特别的保护策略的话, 可以说 Jar 包是没有保密性的了.
创新互联建站拥有十载成都网站建设工作经验,为各大企业提供成都网站制作、网站建设、外贸网站建设服务,对于网页设计、PC网站建设(电脑版网站建设)、成都app软件开发、wap网站建设(手机版网站建设)、程序开发、网站优化(SEO优化)、微网站、国际域名空间等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了很多网站制作、网站设计、网络营销经验,集策划、开发、设计、营销、管理等网站化运作于一体,具备承接各种规模类型的网站建设项目的能力。
但是, 一般来说, 代码是有知识产权保护和 Licence 声明的, 所以, 你的竞争对手在反编译你的代码时, 是冒着侵权被诉讼的风险的.
而且, 可以采用保护策略来防止反编译, 比如采用工具来扰乱编译得到的 .class 文件.
密码 用md5摘要跑了之后储存,验证也是跑了再对比,
至于其他资料 自己写个算法加密,给你个思路 字符串转 char数组 遍历每个 char 转成int + 一个数值 再转回char 再连接回字符串 保存,解密就 减那个数值
或者直接哈希,
以前无聊写的
public class Jm {
/**
* @param args
*/
public static void main(String[] args) {
String str="你妈叫你回家吃饭了";
String str1=jm(111,str);
System.out.println(str1);
str1=jm1(111,str1);
System.out.println(str1);
}
public static String jm(int key,String str){
String str1="";
char [] a=str.toCharArray();
int[] b=new int[a.length];
for(int i=0;ia.length;i++)
b[i]=(int)a[i];
for(int i=0;ia.length;i++)
a[i]=(char)(b[i]+key*2);
for(int i=0;ia.length;i++)
str1=str1+a[i];
return str1;
}
public static String jm1(int key,String str){
String str1="";
char [] a=str.toCharArray();
int[] b=new int[a.length];
for(int i=0;ia.length;i++)
b[i]=(int)a[i];
for(int i=0;ia.length;i++)
a[i]=(char)((b[i]-key*2));
for(int i=0;ia.length;i++)
str1=str1+a[i];
return str1;
}
}
你这里只涉及一层静态加密, 想来也不会是什么非常机密的东西, 只要把破译的代价象征性地搞得高一点就行了, 没必要追求得很多, 更不要指望达到无法破解的效果.
照着二楼的讲法做就可以了, 大体的思路就是这样, 让别人看上去觉得加密比较复杂, 预计破解的代价和收益相比较大, 不值得去破解.
我可以给你一个稍微具体一点的方案. 比如说你用a进行解密, 再生成一个动态密钥b进行加密, 再解密, 再处理:
x - f_a(x) - g_b(f_a(x)) - f_b(g_b(f_a(x))) - 根据需求进行后续处理
然后你实现的时候把前两步实现在一个函数AAA()里(当然注意把常量a拆散了保存, 组装的时候加一些运算), 后续处理过程最好能拆成几步, 把其中第一步和对b解密实现在同一个函数BBB()里.
这样别人破解的时候如果只看AAA会觉得你的加密是动态的, 因为实际上涉及了一个动态密钥;
如果同时看AAA和BBB又会觉得解密之后的东西是只能适合你某个特定的后续处理需求的数据, 而不是未加密的原始数据, 也已经丢失了信息, 不太适合别的用途.
当然最好在BBB的输出上也加一层密, 这样一般来讲不下很大的工夫看到的只能是一头雾水.