C# 创建不带internet的应用程序保护文件或密钥

C# 创建不带internet的应用程序保护文件或密钥,c#,protection,C#,Protection,程序获取MathBoard的wmi代码 string motherCode; ManagementObjectSearcher searcher = new ManagementObjectSearcher( "SELECT SerialNumber FROM Win32_BaseBoard"); ManagementObjectCollection information = searcher.Get(); foreach (ManagementObject obj in in

程序获取MathBoard的wmi代码

 string motherCode;    
 ManagementObjectSearcher searcher = new ManagementObjectSearcher(
"SELECT SerialNumber FROM Win32_BaseBoard");
 ManagementObjectCollection information = searcher.Get();
 foreach (ManagementObject obj in information)
 {
    foreach (PropertyData data in obj.Properties)
    matherCode = data.Value.ToString();
 }

对其进行加密,用户向我发送带有代码的电子邮件,然后我做一些事情(我应该做什么?)并使用许可证文件/密钥向用户发送电子邮件。我读了很多关于保护、许可等的信息,但我不明白我的程序应该做什么。thk

我的建议是阅读非对称密码术。完成后,它的工作原理如下:

1/为自己准备一对公钥/私钥

2/申请许可证时,用户向您发送电子邮件,其中包含您希望“保护”的任何信息。在这种情况下,您需要主板上的WMI代码(不管是什么-我不是硬件bod…),但您也可以选择其他信息,如用户数量等-基本上是您不希望客户端能够处理的任何信息

3/然后使用私钥加密此文件,并将其发送回

4/您的软件在检查其“许可证”(实际上是加密文件)时,只需使用您的公钥对加密文件进行解密。该密钥可能随您的系统一起提供,但最好将其与加密文件一起发送电子邮件-从而允许您不时更改自己的私钥

5/检查解密文件中包含的信息,以查看其是否与您正在运行的环境匹配。如果有,很好-如果没有,许可证违规


我确信有更好的算法可以用于这类事情,但这是我在离开办公室回家前五分钟内所能想到的最好的算法…

我想这个想法是,当你的程序启动时,它也会执行相同的操作,读取许可证文件,比较两者,如果它们不同,就会停止。这可能会愚弄一个下定决心的黑客几分钟。是的,这是真的,但每个网站的所有用户都说“每个人都做它认为合适的事”,没有人说我,我该怎么办