Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从硬件生成序列号,并在其中隐藏一些可检索的信息_C#_Security - Fatal编程技术网

C# 从硬件生成序列号,并在其中隐藏一些可检索的信息

C# 从硬件生成序列号,并在其中隐藏一些可检索的信息,c#,security,C#,Security,我正试图找出做以下事情的最佳方法:我想根据唯一的硬件编号(MAC地址/MB序列号等)生成一个序列号(在程序中使用)。这是最简单的部分。我还需要“隐藏”其中的一些信息,我应该能够在运行时检索这些信息,以便只启用程序的特定功能。例如: MAC地址。是12:23:34:45:56:78->我把这个放进了我的串行发生器->我变得像ABCD-DEFG-HIJK->现在我不得不在里面隐藏一些信息。是否有实现这一目标的最佳实践 考虑到我不打算设置许可服务器来管理每个串行密钥和程序的已启用功能之间的关联,有更好

我正试图找出做以下事情的最佳方法:我想根据唯一的硬件编号(MAC地址/MB序列号等)生成一个序列号(在程序中使用)。这是最简单的部分。我还需要“隐藏”其中的一些信息,我应该能够在运行时检索这些信息,以便只启用程序的特定功能。例如:

MAC地址。是12:23:34:45:56:78->我把这个放进了我的串行发生器->我变得像ABCD-DEFG-HIJK->现在我不得不在里面隐藏一些信息。是否有实现这一目标的最佳实践

考虑到我不打算设置许可服务器来管理每个串行密钥和程序的已启用功能之间的关联,有更好的方法吗?毕竟,如果我在序列号中隐藏了一些可检索的信息,那么一个彻底的破解者总是有可能理解这是如何做到的,因此编辑这些信息以便为他/她的许可计划启用禁止的功能


编辑:我的想法;这样做怎么样(涉及非对称加密):串行生成器程序获取一些唯一的硬件编号,然后简单地附加我应该在运行时检索的信息。此时,它用我的私钥加密生成的字符串。结果字符串将是我将提供给客户的字符串。此时,当实际程序在启动时读取此字符串时,它将使用我的公钥对其进行解密,公钥将与程序捆绑在一起,检查字符串的第一部分是否与pc的唯一硬件编号匹配,然后解析附加信息,决定应启用哪些功能。这行得通吗

甚至不需要成为一个彻头彻尾的破坏者。所有真正需要的是一些时间,一些好奇心,和一个点网络反编译软件。(dotpeek有人吗?)如果你走这条路,你需要准备好处理有人更改硬件或将VM移植到新主机的情况,这将使他们的序列号无效。他们可能不会因为你的应用程序停止工作而感到高兴。如何阻止客户端对你的软件进行反编译,并使用你自己的方法读取所谓的“隐藏”数据?