我正在开发一个用C ++ / Obj-C编写的适用于Windows和Mac的小型跨平台产品。我被要求为此实施许可模块。这项任务是为我们所有产品引入许可的雄心勃勃的项目的一部分。最后,我们将有一个完整的许可计划,我们将能够向我们的客户出售支持年度续订,许可级别等的许可证。我的问题是我不知道实施许可证检查器的第一件事。任何人都能指出一些方法吗?我可以研究哪些开源许可模块?
答案 0 :(得分:16)
我使用了部分密钥验证(PKV)系统,我在C#中使用PHP生成器实现了这一点。谷歌将提出各种点击,解释和实施;但Brandon Staggs写了一篇很好的概述(虽然在Delphi中!),这里:
PKV通过对密钥中的某些信息(许可证类型,序列号产品,日期等)进行编码以及用户名的散列和编码信息的散列来工作。大部分键实际上由多个一个char哈希组成。这个想法是你只检查这些哈希的一个子集。发布的确切子集可以随着时间的推移而改变,以保证某些安全性并防止某些逆向工程。
我还会对密钥进行加密,以帮助模糊许可证中每个字符的含义。否则,有多个键的人可能会确定某些字符位置意味着某些事情(“哦,字符3-4是序列号”)。这可能是你盔甲的一个缝隙!
您开发的任何许可证系统都将是不完美的。这将是可以破解的,如果你的产品很受欢迎,将被破解。然而,有一个强有力的论据,即存在一个许可证制度,以保持诚实的人诚实,并为稍微不诚实的人产生足够的障碍 - 但没有太多的障碍,以至于它变得太不方便(例如,我通常反对硬件锁定)。那些破解你的系统的人可能不会为此付出代价。