如何对自己写的程序进行加密?

qq_25344625 2016-02-03 02:18:04
我最近写了一个单机的C#软件,现在问题来了,我如何加密才可以让我想要的有访问权限的电脑使用我的软件,让我不想要有权限的用户无法使用
...全文
925 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
CGabriel 2016-02-14
  • 打赏
  • 举报
回复
引用 13 楼 qq_25344625 的回复:
[quote=引用 8 楼 guestb的回复:]先混淆代码,用工具做。 之后在软件运行时,连接服务器认证。
有不需要连网的方法不?[/quote] 不联网的话,只能够用传统的序列号的方式了。 基本上就是防君子不防小人。 话说,当你的程序到了大规模盗版的时候,也不用担心这个问题了。
qq_25344625 2016-02-07
  • 打赏
  • 举报
回复
引用 8 楼 guestb的回复:
先混淆代码,用工具做。 之后在软件运行时,连接服务器认证。
有不需要连网的方法不?
qq_25344625 2016-02-07
  • 打赏
  • 举报
回复
引用 1 楼 流芳百世123的回复:
如果只是让未许可的电脑不能使用的话可以用读取mac地址的方式,程序启动先读取本机mac地址,在允许列表中则启动,否则退出。
那如何给用户的计算机安装
qq_25344625 2016-02-07
  • 打赏
  • 举报
回复
引用 2 楼 just59277的回复:
如果只是限制用户登录,你可以做一个管理员权限,这个你把密码设定好,自己知道就行,然后其他的用户就通过你管理员的账户去添加。要做到限定电脑的话,那你要弄个机器码的对照了。也还是要通过管理员添加一个机器码,登录的时候判定一下机器码是不是正确。
我最想要的是在安装的时候输入密码,有好的想法吗?
  • 打赏
  • 举报
回复
public static double[,] Cressman(double[,] stationData, double[] X, double[] Y, double unDefData, List<double> radList) { int num5; int num6; double num13; double num14; double num20; int num21; double num22; double num23; double num24; double[,] numArray = (double[,])stationData.Clone(); int length = X.Length; int num2 = Y.Length; int num3 = numArray.GetLength(1); double[,] numArray2 = new double[num2, length]; int count = radList.Count; double num7 = X[0]; double num8 = X[X.Length - 1]; double num9 = Y[0]; double num10 = Y[Y.Length - 1]; double num11 = X[1] - X[0]; double num12 = Y[1] - Y[0]; double num15 = 0.0; double num16 = 0.0; int num17 = 0; for (num5 = 0; num5 < num3; num5++) { num13 = numArray[0, num5]; num14 = numArray[1, num5]; numArray[0, num5] = (num13 - num7) / num11; numArray[1, num5] = (num14 - num9) / num12; if (numArray[2, num5] != unDefData) { num16 += numArray[2, num5]; num17++; } } num16 /= (double)num17; double num18 = -9.999E+20; double num19 = 9.999E+20; double[,] numArray3 = new double[num2, length]; double[,] numArray4 = new double[num2, length]; for (num5 = 0; num5 < num2; num5++) { num6 = 0; while (num6 < length) { numArray3[num5, num6] = num18; numArray4[num5, num6] = num19; num6++; } } if (radList.Count > 0) { num20 = radList[0]; } else { num20 = 4.0; } num5 = 0; while (num5 < num2) { num14 = num5; num9 = num14 - num20; num10 = num14 + num20; num6 = 0; while (num6 < length) { num13 = num6; num7 = num13 - num20; num8 = num13 + num20; num17 = 0; num15 = 0.0; num21 = 0; while (num21 < num3) { num22 = numArray[2, num21]; num23 = numArray[0, num21]; num24 = numArray[1, num21]; if ((((((num23 >= 0.0) && (num23 < (length - 1))) && (num24 >= 0.0)) && (num24 < (num2 - 1))) && ((((num22 != unDefData) && (num23 >= num7)) && ((num23 <= num8) && (num24 >= num9))) && (num24 <= num10))) && (Math.Sqrt(Math.Pow(num23 - num13, 2.0) + Math.Pow(num24 - num14, 2.0)) <= num20)) { num15 += num22; num17++; if (numArray3[num5, num6] < num22) { numArray3[num5, num6] = num22; } if (numArray4[num5, num6] > num22) { numArray4[num5, num6] = num22; } } num21++; } if (num17 == 0) { numArray2[num5, num6] = unDefData; } else { numArray2[num5, num6] = num15 / ((double)num17); } num6++; } num5++; } for (int i = 0; i < count; i++) { num20 = radList[i]; for (num5 = 0; num5 < num2; num5++) { num14 = num5; num9 = num14 - num20; num10 = num14 + num20; for (num6 = 0; num6 < length; num6++) { if (numArray2[num5, num6] != unDefData) { num13 = num6; num7 = num13 - num20; num8 = num13 + num20; num15 = 0.0; double num27 = 0.0; for (num21 = 0; num21 < num3; num21++) { num22 = numArray[2, num21]; num23 = numArray[0, num21]; num24 = numArray[1, num21]; if (((((num23 >= 0.0) && (num23 < (length - 1))) && (num24 >= 0.0)) && (num24 < (num2 - 1))) && ((((num22 != unDefData) && (num23 >= num7)) && ((num23 <= num8) && (num24 >= num9))) && (num24 <= num10))) { double num25 = Math.Sqrt(Math.Pow(num23 - num13, 2.0) + Math.Pow(num24 - num14, 2.0)); if (num25 <= num20) { int num28 = (int)num24; int num29 = (int)num23; int num30 = num28 + 1; int num31 = num29 + 1; double item = numArray2[num28, num29]; double num33 = numArray2[num28, num31]; double num34 = numArray2[num30, num29]; double num35 = numArray2[num30, num31]; List<double> list = new List<double>(); if (item != unDefData) { list.Add(item); } if (num33 != unDefData) { list.Add(num33); } if (num34 != unDefData) { list.Add(num34); } if (num35 != unDefData) { list.Add(num35); } if (list.Count != 0) { double num36; if (list.Count == 1) { num36 = list[0]; } else if (list.Count <= 3) { double num37 = 0.0; foreach (double num38 in list) { num37 += num38; } num36 = num37 / ((double)list.Count); } else { double num39 = item + ((num34 - item) * (num24 - num28)); double num40 = num33 + ((num35 - num33) * (num24 - num28)); num36 = num39 + ((num40 - num39) * (num23 - num29)); } double num41 = num22 - num36; double num42 = ((num20 * num20) - (num25 * num25)) / ((num20 * num20) + (num25 * num25)); num15 += num41 * num42; num27 += num42; } } } } if (num27 < 1E-06) { numArray2[num5, num6] = unDefData; } else { double num43 = numArray2[num5, num6] + (num15 / num27); numArray2[num5, num6] = Math.Max(numArray4[num5, num6], Math.Min(numArray3[num5, num6], num43)); } } } } } return numArray2; } 上面这个函数是一个模块里面的一个比较短的函数。还有更加长的。长很多倍的大函数。你能看懂不?这里面有问题。有时候出错。有时候不出错。不用想了。这样写来10个程序员也看不懂。
  • 打赏
  • 举报
回复
其实c#就是开源的。大部分加密都无效。很容易反编译。何必呢?谁非得看你的代码不可?要知道现在互联网很多好代码 现在互联网公开的好代码多少g都下不完。又不是你那个具有极高的商业价值。如果极高的价值。那肯定很复杂,肯定用c++了 以前我也爱加密。后面发现谁看啊。自己搞好就下班了。想那么多干嘛
guestb 2016-02-05
  • 打赏
  • 举报
回复
先混淆代码,用工具做。 之后在软件运行时,连接服务器认证。
秋的红果实 2016-02-04
  • 打赏
  • 举报
回复
也就是读取硬盘编号、mac地址等 还可以用加密狗
星空你好 2016-02-04
  • 打赏
  • 举报
回复
有专门的加壳软件,可以实现管理权限
john_QQ:2335298917 2016-02-03
  • 打赏
  • 举报
回复
每台机器算一个机器码,可以根据mac地址、CPUID等等来算,然后要求每个用户注册,根据机器码生成注册码给允许使用的电脑用户,不能注册的就无法使用。另外,你需要混淆工具来对你的C#程序进行混淆,否则很容易被破解掉了。
正怒月神 2016-02-03
  • 打赏
  • 举报
回复
怎么感觉就是个登录功能呢。 你记录访问的ip地址到数据库匹配就好了,就好了
xdashewan 2016-02-03
  • 打赏
  • 举报
回复
你首先的解决不被反编译,不然什么措施都是无效的。
just59277 2016-02-03
  • 打赏
  • 举报
回复
如果只是限制用户登录,你可以做一个管理员权限,这个你把密码设定好,自己知道就行,然后其他的用户就通过你管理员的账户去添加。要做到限定电脑的话,那你要弄个机器码的对照了。也还是要通过管理员添加一个机器码,登录的时候判定一下机器码是不是正确。
  • 打赏
  • 举报
回复
如果只是让未许可的电脑不能使用的话可以用读取mac地址的方式,程序启动先读取本机mac地址,在允许列表中则启动,否则退出。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧