我被要求为某些软件开发密钥生成/验证系统。他们也可以对开发的开源或商业系统开放,但更喜欢从头开始的系统。在线激活必须是可选的,因为某些安装很可能在隔离的服务器上。我知道存在一种具有大量盗版技术的用户/安全复合体。所以我想我在问那里有什么软件,库和技术?我很欣赏个人知识,网站或书籍。
答案 0 :(得分:1)
如果你接受某些东西的散列,它会(理想情况下)产生一个不可预测的字符串。
您可以使用一种算法来获取可预测的SHA1(如序列号)与足够长的盐连接的SHA1。只要您的盐仍然是永久性秘密并且SHA1从未被破坏,您的密钥将非常安全。
例如,如果你取SHA1为“1”(你的第一个许可证密钥)和超级秘密盐“stackoverflow8as7f98asf9sa78f7as9f87a7”,你得到密钥“95d78a6331e01feca457762a092bdd4a77ef1de1”。如果需要,可以在版本号前加上它。
如果您想要在线授权,则需要三件事:
公钥加密可以帮助完成第一项和第二项。即使Photoshop CS4在第3项中也存在问题,这是一个棘手的问题。
答案 1 :(得分:0)
我有偏见 - 鉴于我共同创立的公司开发了Cobalt software licensing solution for .NET - 但我建议你选择第三方解决方案,而不是自己动手。
查看文章Developing for Software Protection and Licensing,其中提出了以下观点:
我们相信大多数公司都愿意 购买一个更好的服务 高质量的第三方许可 系统。这种方法将释放你的 开发人员致力于核心工作 功能,并将减轻 维护和支持费用。它也是 允许你利用 许可提供的领域专业知识 专家,并避免释放 容易破解的软件。
购买的另一个好处 第三方解决方案就是你可以 快速轻松地评估它 适应性;与内部系统 你必须提前支付 开发可能没有的系统 证明足以满足您的需求。 选择高质量的第三方 系统大大降低了风险 参与开发解决方案 内部。
如果您已经开始自己动手,请提出建议:尽可能测试最广泛的客户端系统。真实世界的硬件很奇怪,Windows版本之间在某些方面的变化非常显着。
你几乎肯定要花很多时间用你实施的硬件识别系统来熨平折痕。