扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
当然有软件保护公司内部源代码了,搜索源代码加密软件即可。不过需要注意的是,这里所指的加密并不是对源代码本身进行加密保护,而是指环境加密(DSA数据安全隔离技术等)。根本原因在于代码本身进程较多、调用复杂,对本身依据进程进行加密保护(防泄密)容易卡、慢、死机。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名申请、网站空间、营销软件、网站建设、防城网站维护、网站推广。
你这里只涉及一层静态加密, 想来也不会是什么非常机密的东西, 只要把破译的代价象征性地搞得高一点就行了, 没必要追求得很多, 更不要指望达到无法破解的效果.
照着二楼的讲法做就可以了, 大体的思路就是这样, 让别人看上去觉得加密比较复杂, 预计破解的代价和收益相比较大, 不值得去破解.
我可以给你一个稍微具体一点的方案. 比如说你用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的输出上也加一层密, 这样一般来讲不下很大的工夫看到的只能是一头雾水.
可以采用保护策略来防止反编译, 一般来说.class 文件是高度抽象的, 不加特别的保护策略的话, 可以说 Jar 包是没有保密性的了.
但是, 比如采用工具来扰乱编译得到的 , 你的竞争对手在反编译你的代码时.
而且Java , 现行也有很多好用的工具. 所以, 代码是有知识产权保护和 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;
}
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流