首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >激活密钥的算法-安全性

激活密钥的算法-安全性
EN

Stack Overflow用户
提问于 2010-08-01 20:24:52
回答 6查看 3.9K关注 0票数 7

我正在编写一个软件应用程序,用户需要为它购买许可证并激活它。我需要关于如何开始编写一个强大的代码生成算法,当然还有代码检查的建议。我知道人们可以反向设计代码并制造一个密钥,但是,我的问题有两个部分:

  1. 通常,不管应用程序是这样破解的,我如何开始编写一个算法来接受某个序列、字符串或组合。(这是对的吗?例如:第一个数字是3-9,第二个数字应该是第一个- 3,而第三个数字应该是第二个*+....whatever.?)
  2. 在不与互联网打交道的情况下,保护桌面应用程序免受盗版的最佳方法是什么?这是算法(使反向工程变得更难),保护源代码不被看到后,应用程序安装在什么地方?

PS:也许值得一提的是,我正在使用Java作为我的开发语言。谢谢

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-08-01 20:47:20

  1. 听起来您可能从公钥密码学方法中受益。
  2. 这可以细分为两个子点:
代码语言:javascript
运行
复制
- A. Have you read [this thread here on SO?](https://stackoverflow.com/questions/1473143/methods-to-stop-software-piracy) It might give you some breadth on the issue.
- B. As @Jaka said, it's not a great challenge (from what I've read) to produce human readable code from Java byte code. You can run your code through [an obfuscator](http://www.google.com/search?client=safari&rls=en&q=java+obfuscator&ie=UTF-8&oe=UTF-8) to make it more difficult for someone to produce human readable code from it, but if someone really wants to read your code, they'll almost always find a way. The best approach to combat this is to take the advice in the SO thread I linked to: make it easier for someone to buy your app than for someone to steal it.

(在声明他使用Java后编辑)

票数 2
EN

Stack Overflow用户

发布于 2010-08-01 21:04:47

对于许可证密钥,您可以使用公共私钥加密。通过这种方式,您可以将私钥嵌入到软件中,并加密一个字符串,这对您的软件来说意味着什么(比如您的软件的哪些特性获得了许可)。或者你可以嵌入公开,给软件一个具有特殊意义的字符串,然后用你的私钥签名。然后,软件可以检查签名是否有效。

编辑:使用公钥-私钥答案 labratmatt更快:)

显然,您的保护的第二部分将需要处理使您的软件难以分解和调试的问题(这就是破解者如何检查您的软件,并试图通过补丁绕过保护,或者他们试图找出他们如何制作keygen)。这个部分实际上要困难得多,涉及的技术包括对整个可执行文件进行加密,并将其封装在加载器中,加载器在运行时对其进行解密。加载程序还可以使用各种技术来检测调试器的存在。

编辑:,因为您提到应用程序是用JAVA编写的,那么这个加密和打包步骤就更重要了,因为JAVA可以很容易地分解成一种非常可读的形式。有些“混淆器”程序会处理类,这样反编译器就不能生成可读的代码,但是破解它仍然比破解编译成机器代码的代码容易得多。

如果你不想花时间开发自己的保护,你也可以使用商业保护软件之一。他们中有相当多的人可以选择,他们提供了许多保护计划(软线,基于时间的许可证,.)

许多商业软件都使用FlexNet、HASP、Wibu-key等软件包。

票数 1
EN

Stack Overflow用户

发布于 2010-08-01 21:02:18

建议:加密应用程序中提供许可功能的部分。用户需要在购买时提供一个密钥,以便使用代码的这一部分。

如果您曾经让用户在购买之前运行您想要保护的代码,则没有非常安全的脱机解决方案。充其量,你可以阻止最随意的盗版。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3383608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档