对于j2ee项目的保护,怎么防止客户随意复制
请问大家,项目完成后部署到客户的服务器,那么通过什么方式防止客户随意复制项目到别的服务器呢?比如一个人买了我们的项目,然后复制了N多份分给别人用,那我们不是亏死了。这种问题怎么解决呢? --------------------编程问答-------------------- 制作一个CDKey之类的东西,验证你们的服务器,而且加密算法要严格。 --------------------编程问答-------------------- CDkey,不谢 --------------------编程问答-------------------- 通常是与用户现有服务器的数个短期不会被更换的硬件的编号进行邦定,这些硬件编号是全球唯一的,所以这样就可以确保用户复制的副本只能在这台服务器上运作。 --------------------编程问答-------------------- 跟他的mac地址绑定 --------------------编程问答-------------------- 同意4楼的说法 和他的mac地址绑定 就ok --------------------编程问答-------------------- 项目本身 采用封包 比如对源码进行加密 然后可以绑mac之类的 --------------------编程问答-------------------- 或者 先提供在线服务 先试用 付钱签协议 在协议中规定各方利益 --------------------编程问答-------------------- 加密狗或者license --------------------编程问答-------------------- 就跟软件的注册码一样 --------------------编程问答-------------------- 提供license。 --------------------编程问答-------------------- 怎么这么小肚鸡肠?
现在这年头如果再靠卖软件营生的话,那离饿死也不远了,现在都是靠卖服务!
我们这神奇的国度也很搞笑,用着盗版的东西做出来的东西,还想不让别人去盗版! --------------------编程问答-------------------- --------------------编程问答--------------------
同感 --------------------编程问答-------------------- 卖服务 --------------------编程问答-------------------- 微软都搞不定盗版,何况你! --------------------编程问答--------------------
这个。。。。。。 --------------------编程问答--------------------
说了实话 --------------------编程问答--------------------
// 获取MAC地址的方法
private static String getMACAddress(InetAddress ia) throws Exception {
// 获得网络接口对象(即网卡),并得到mac地址,mac地址存在于一个byte数组中。
byte[] mac = NetworkInterface.getByInetAddress(ia).getHardwareAddress();
// 下面代码是把mac地址拼装成String
StringBuffer sb = new StringBuffer();
for (int i = 0; i < mac.length; i++) {
if (i != 0) {
sb.append("-");
}
// mac[i] & 0xFF 是为了把byte转化为正整数
String s = Integer.toHexString(mac[i] & 0xFF);
sb.append(s.length() == 1 ? 0 + s : s);
}
// 把字符串所有小写字母改为大写成为正规的mac地址并返回
return sb.toString().toUpperCase();
}
用MAC 地址,然后用RAS 加密
--------------------编程问答-------------------- String path=Thread.currentThread().getContextClassLoader().getResource(".").getPath();
BufferedReader in=
new BufferedReader(new InputStreamReader(new FileInputStream(path+"Lh_AIG_Enc_RSA.dat")));
String ctext=in.readLine();
BigInteger c=new BigInteger(ctext);
//获取私钥
FileInputStream f=new FileInputStream(path+"RSA_priv.dat");
ObjectInputStream b=new ObjectInputStream(f);
RSAPrivateKey prk=(RSAPrivateKey)b.readObject( );
//获取私钥的参数d,n
BigInteger d=prk.getPrivateExponent();
BigInteger n=prk.getModulus();
//System.out.println("d= "+d);
//System.out.println("n= "+n);
//解密明文
BigInteger m=c.modPow(d,n);
// System.out.println("m= "+m);
//计算明文对应的字符串并输出。
byte[] mt=m.toByteArray();
System.out.println("PlainText is ");
for(int i=0;i<mt.length;i++){
System.out.print((char) mt[i]);
} --------------------编程问答-------------------- 源码加密,绑定硬件
补充:Java , Java EE