C#应用程序的简单软件认证?

C#应用程序的简单软件认证?,c#,php,.net,licensing,C#,Php,.net,Licensing,我希望使用我的软件的人不能将应用程序的副本发送给其他人。我想我可以这样使用私钥/公钥加密:向用户发送一个激活码,我会保存在web服务器的数据库中。然后,用户第一次运行应用程序时,它会将代码+一些有关其硬件的信息发送到服务器。然后,我会将该信息视为加密字符串,并在服务器中使用私钥对其进行解密,然后将解密后的字符串发送回用户。应用程序将存储此字符串,并在每次运行应用程序时使用公钥对其进行加密,并且应用程序将检查它是否与硬件信息+他的代码匹配。但我猜有一个更简单的方法来做到这一点。我真的不需要那么多安

我希望使用我的软件的人不能将应用程序的副本发送给其他人。我想我可以这样使用私钥/公钥加密:向用户发送一个激活码,我会保存在web服务器的数据库中。然后,用户第一次运行应用程序时,它会将代码+一些有关其硬件的信息发送到服务器。然后,我会将该信息视为加密字符串,并在服务器中使用私钥对其进行解密,然后将解密后的字符串发送回用户。应用程序将存储此字符串,并在每次运行应用程序时使用公钥对其进行加密,并且应用程序将检查它是否与硬件信息+他的代码匹配。但我猜有一个更简单的方法来做到这一点。我真的不需要那么多安全措施。有什么建议吗


编辑:实际上,我的公钥/私钥技巧根本不起作用。从数学上讲…

保护C#应用程序将非常困难。我会把一些琐碎的东西放在一起(向服务器发送一条消息,其中包含一些独特的识别细节,如果不同,则返回一条“未经授权”的消息)。任何具有良好技能的人都可能能够打开MSIL并删除授权检查位,这样我就不会在上面花费太多时间。

实际上,创建序列化变量并在程序启动时将其保存在计算机上,因为第一次运行时,如果文件丢失,则文件将丢失,然后将其发送到服务器,它将创建序列化文件,之后,如果不是第一次,则会加载序列化文件,阻止用户界面,隐藏序列化文件很容易,因为microsoft有许多文件夹,这将更容易,因为用户到服务器的流量很小,而且只发生一次。。只有当它启动查询,让程序知道它不是第一次打开时,才会发生这种情况


计算机的身份是恒定的。。因为序列化文件可能是唯一的。。这取决于你如何使它独一无二……

为什么它不起作用?听起来不错。无论您使用何种授权方案,请确保您也在程序集上使用模糊处理!