C# 解决注册/验证问题的最佳方法
我编写了一个注册密钥脚本,当应用程序位于连接到internet的计算机上时,该脚本非常有效。但是,我希望在应用程序位于保持脱机状态的计算机上时使脚本正常工作。我希望你们能给我一些想法,让我知道如何让这个工作 脚本如何工作C# 解决注册/验证问题的最佳方法,c#,.net,vb.net,windows,visual-studio,C#,.net,Vb.net,Windows,Visual Studio,我编写了一个注册密钥脚本,当应用程序位于连接到internet的计算机上时,该脚本非常有效。但是,我希望在应用程序位于保持脱机状态的计算机上时使脚本正常工作。我希望你们能给我一些想法,让我知道如何让这个工作 脚本如何工作 用户安装应用程序 在打开的屏幕上,用户单击一个“指纹”按钮,生成一个计算机特有的代码(操作系统和硬件信息的组合) 用户提交指纹 我有一个应用程序在我的终端,我采取他的指纹,添加一个到期日期,它输出一个密钥文件,这是唯一的他的计算机,将使应用程序无用,直到密钥文件被更新 要检查过
任何帮助都会得到感激 正如您所指出的,您不能信任客户提供准确的时间数据。如果无法访问受信任的时间源,则无法仅使用过期日期可靠地防止所描述的攻击 您可以强制使用受信任的时间源(例如,使用内部RTC作为种子的USB PRNG加密狗)来验证系统时钟,然后阻止应用程序运行。然而,对于低容量,这种加密狗的价格通常为每台60美元以上 一个简单的对策是记录应用程序已打开的时间,如果应用程序已打开太长时间而未签入,则终止。例如:如果您的预期入住频率为3个月,并且计算机显示您上次入住已有3天,但应用程序已打开45天,则可以确定时钟不正确
即使如此,您的代码仍在客户端不受信任的计算机上运行,并且可能被破坏。DRM的任何衡量标准都只是模糊化。起初,用户总会找到打破离线授权机制的方法,而且通常会。所以在投入精力之前考虑一下。 您需要更改您的许可机制。考虑到可能有用户已经在旧机制上使用您的应用程序,这要困难得多。如果只想使用新的授权机制,您可能必须保留这两种授权机制,或者向现有用户提供更新 要实现脱机许可方案,可以使用类。请注意,这永远不会像您当前的方法那样有效。以下是我能想到的简单方法:
如果您的用户很少使用您的应用程序,他们仍然可以使用它。我终于完成了它,我认为它看起来非常好:1。程序加载2。用户必须连接到internet才能创建计算机和时间4独有的指纹。用户将代码传递给我,然后我生成一个单独的代码来解锁计算机,直到过期日期5。每次应用程序加载和退出时,程序都会更新时间,以确保时间向前移动6。当应用程序发现它要更新时间7时,它也会连接到internet。任何时候,在网络验证时间之前,不同步计算机锁