Rsa 使用存储在应用程序二进制文件中的公钥解密软件许可证

Rsa 使用存储在应用程序二进制文件中的公钥解密软件许可证,rsa,encryption-asymmetric,license-key,Rsa,Encryption Asymmetric,License Key,关于,如果私钥保存在许可证服务器上,而公钥在应用程序可执行文件中提供,而不是相反,我无法理解软件许可方案如何工作 我正在尝试执行以下软件许可计划: 用户在购买时获得一个产品ID(基于),并在应用程序中使用它来激活它 应用程序连接到许可证服务器,该服务器使用RSA公钥发回加密文本。此文本(许可证)将存储在用户的硬盘上 每次应用程序启动时,它都需要使用RSA私钥解密此许可证,以便提取不同的参数,如产品版本、产品限制、注册公司等 如果应用程序没有私钥,但有公钥,那么它如何解密此许可证文本 谢谢 编辑:

关于,如果私钥保存在许可证服务器上,而公钥在应用程序可执行文件中提供,而不是相反,我无法理解软件许可方案如何工作

我正在尝试执行以下软件许可计划:

  • 用户在购买时获得一个产品ID(基于),并在应用程序中使用它来激活它
  • 应用程序连接到许可证服务器,该服务器使用RSA公钥发回加密文本。此文本(许可证)将存储在用户的硬盘上
  • 每次应用程序启动时,它都需要使用RSA私钥解密此许可证,以便提取不同的参数,如产品版本、产品限制、注册公司等
  • 如果应用程序没有私钥,但有公钥,那么它如何解密此许可证文本

    谢谢

    编辑:

  • 如果用于加密许可证的密钥仅在服务器端可用,而对公众不可用,我们可以称之为私钥吗?在这种情况下,如果一方拥有加密密钥,而另一方(公众)拥有解密密钥,那么拥有解密密钥的一方能否获得加密密钥?问题是基于stackoverflow的各种主题,即在给定私钥的情况下生成公钥并不困难。如果您拥有私钥,则实际上可以同时拥有这两个密钥
  • 这个想法是,一旦软件被激活,它就不再需要连接到许可证服务器

  • 应用程序应以纯文本形式存储其详细信息

    注册时,服务器应使用私钥对这些详细信息(包括机器标识)进行签名


    每次应用程序启动时,它都应该使用公钥验证签名。

    我真的不认为需要所有这些东西

    为什么不在验证时简单地与服务器建立连接,让服务器生成一个包含您想要的所有参数的文件(甚至是纯文本),然后让服务器对该文件进行签名并将其返回给软件


    客户端可以读取文件,然后使用现有的众多数字签名算法之一验证te签名。

    我需要加密这些详细信息,它们包含有关应用程序使用限制的信息,如基本版本,企业版等。如果是纯文本,则只需更改文本即可解锁应用程序。@MarcusFrenkel如果数据被更改,服务器签名将无法验证。@MarcusFrenkel:这就是签名的目的。如果用户修改了任何内容,签名将不再匹配,并且用户在没有服务器公钥的情况下无法对其重新签名。(除非用户修改应用程序并输入自己的公钥,或者完全删除支票)现在我明白了。非对称加密对我来说是新的,我认为签名和加密是一回事。非常感谢。我会照你的建议去做。我不得不接受另一个答案,因为它是第一个。非常感谢,不用担心。祝您在实施和部署解决方案方面好运。