You will need to develop or find an algorithm that creates sufficiently complex strings for your license keys.
Generate the license key based on some bit of information unique to a user, like their E-Mail address.
Your program would then require the user to enter their E-Mail address and license key. It would then ensure the license key is correct by running the same algorithm you did to generate it in the first place.
The approach i have used in the past is a simple one but effective. I generate about a 1000 keys to my software and run them through a hashing algorithm. I then include them within my program (maybe as an array which takes up little space)
I then give out one unique key of the 1000 generated to each customer and when they enter that into my software it is hashed with the same hashing algorithm and compared against the included hashes. If it compares true you are registered so save it in your config file.
Every so often i update the program by another build number and recreate the keys and hashes included in that build. You just have to keep track of what keys go with what build, but you can control this with a nice database, etc.
Never had any trouble with this system as it can all be fully automated.
You could try generating license keys strings using the user's name + dob + user-selected-password.
OR
Use the user's h/w serial numbers and give them a license key online post install. I am assuming at this point only one computer per license is allowed.
Pinging the web service will not work if a net connection is not available. You should use a combination of pinging and a grace period. If a customer cannot validate/activate the license within 'X' number of days, THEN you declare it as unlicensed.
I suggest you take a look at OffByZero Cobalt (obligatory disclaimer: it's produced by the company I co-founded). You're better off buying an existing proven solution than rolling your own.
We believe that most companies would be better served by buying a high-quality third-party licensing system. This approach will free your developers to work on core functionality, and will alleviate maintenance and support costs. It also allows you to take advantage of the domain expertise offered by licensing specialists, and avoid releasing software that is easy to crack.
发布评论
评论(5)
您将需要开发或找到一种算法来为您的许可证密钥创建足够复杂的字符串。
根据用户特有的一些信息(例如他们的电子邮件地址)生成许可证密钥。
然后,您的程序将要求用户输入他们的电子邮件地址和许可证密钥。然后,它将通过运行与最初生成许可证密钥相同的算法来确保许可证密钥是正确的。
You will need to develop or find an algorithm that creates sufficiently complex strings for your license keys.
Generate the license key based on some bit of information unique to a user, like their E-Mail address.
Your program would then require the user to enter their E-Mail address and license key. It would then ensure the license key is correct by running the same algorithm you did to generate it in the first place.
我过去使用的方法虽然简单但有效。我为我的软件生成大约 1000 个密钥,并通过哈希算法运行它们。然后我将它们包含在我的程序中(可能作为一个占用很少空间的数组),
然后我向每个客户提供生成的 1000 个密钥中的一个唯一密钥,当他们将其输入到我的软件中时,它会使用相同的哈希算法进行哈希处理并进行比较针对包含的哈希值。如果比较 true,则您已注册,因此将其保存在您的配置文件中。
我经常用另一个版本号更新程序,并重新创建该版本中包含的密钥和哈希值。您只需要跟踪哪些密钥与哪个版本相关,但是您可以使用一个好的数据库等来控制它。
这个系统从来没有遇到任何问题,因为它可以完全自动化。
The approach i have used in the past is a simple one but effective. I generate about a 1000 keys to my software and run them through a hashing algorithm. I then include them within my program (maybe as an array which takes up little space)
I then give out one unique key of the 1000 generated to each customer and when they enter that into my software it is hashed with the same hashing algorithm and compared against the included hashes. If it compares true you are registered so save it in your config file.
Every so often i update the program by another build number and recreate the keys and hashes included in that build. You just have to keep track of what keys go with what build, but you can control this with a nice database, etc.
Never had any trouble with this system as it can all be fully automated.
您可以尝试使用用户名 + 出生日期 + 用户选择的密码生成许可证密钥字符串。
或者
使用用户的硬件序列号并在安装后在线为他们提供许可证密钥。我假设此时每个许可证只允许一台计算机。
You could try generating license keys strings using the user's name + dob + user-selected-password.
OR
Use the user's h/w serial numbers and give them a license key online post install. I am assuming at this point only one computer per license is allowed.
如果网络连接不可用,则 Ping Web 服务将不起作用。您应该结合使用 ping 和宽限期。如果客户无法在“X”天内验证/激活许可证,则您将其声明为未经许可。
尝试支持此方案的CryptoLicensing。
Pinging the web service will not work if a net connection is not available. You should use a combination of pinging and a grace period. If a customer cannot validate/activate the license within 'X' number of days, THEN you declare it as unlicensed.
Try CryptoLicensing which supports this scenario.
我建议你看看 OffByZero Cobalt (强制性免责声明:它是由我共同创立的公司生产的) 。您最好购买现有的经过验证的解决方案,而不是自行推出。
正如我们在软件保护和许可开发中指出的那样:
I suggest you take a look at OffByZero Cobalt (obligatory disclaimer: it's produced by the company I co-founded). You're better off buying an existing proven solution than rolling your own.
As we point out in Developing for Software Protection and Licensing: