C#软件授权、注册、加密、解密模块源码解析并制作注册机生成license

最近做了一个绿色免安装软件,领导临时要求加个注册机制,不能让现场工程师随意复制。事出突然,只能在现场开发(离开现场软件就不受我们控了)。花了不到两个小时实现了简单的注册机制,稍作整理。
        基本原理:1.软件一运行就把计算机的CPU、主板、BIOS、MAC地址记录下来,然后加密(key=key1)生成文件;2.注册机将该文件内容MD5加密后再进行一次加密(key=key2)保存成注册文件;3.注册验证的逻辑,计算机信息加密后(key=key1)加密md5==注册文件解密(key=key2);
另外,采用ConfuserEx将可执行文件加密;这样别人要破解也就需要点力气了(没打算防破解,本意只想防复制的),有能力破解的人也不在乎破解这个软件了(开发这个软件前后只花了一周时间而已);
        技术上主要三个模块:1.获取电脑相关硬件信息(可参考);2.加密解密;3.读写文件;

        1.获取电脑相关硬件信息代码:

[csharp] view plain copy
public class ComputerInfo  
{  
    public static string GetComputerInfo()  
    {  
        string info = string.Empty;  
        string cpu = GetCPUInfo();  
        string baseBoard = GetBaseBoardInfo();  
        string bios = GetBIOSInfo();  
        string mac = GetMACInfo();  
        info = string.Concat(cpu, baseBoard, bios, mac);  
        return info;  
    }  
  
    private static string GetCPUInfo()  
    {  
        string info = string.Empty;  
        info = GetHardWareInfo("Win32_Processor", "ProcessorId");  
        return info;  
    }  
    private static string GetBIOSInfo()  
    {  
        string info = string.Empty;  
        info = GetHardWareInfo("Win32_BIOS", "SerialNumber");  
        return info;  
    }  
    private static string GetBaseBoardInfo()  
    {  
        string info = string.Empty;  
        info = GetHardWareInfo("Win32_BaseBoard", "SerialNumber");  
        return info;  
    }  
    private static string GetMACInfo()  
    {  
        string info = string.Empty;  
        info = GetHardWareInfo("Win32_BaseBoard", "SerialNumber");  
        return info;  
    }  
    private static string GetHardWareInfo(string typePath, string key)  
    {  
        try  
        {  
            ManagementClass managementClass = new ManagementClass(typePath);  
            ManagementObjectCollection mn = managementClass.GetInstances();  
            PropertyDataCollection properties = managementClass.Properties;  
            foreach (PropertyData property in properties)  
            {  
                if (property.Name == key)  
                {  
                    foreach (ManagementObject m in mn)  
                    {  
                        return m.Properties[property.Name].Value.ToString();  
                    }  
                }  
  
            }  
        }  
        catch (Exception ex)  
        {  
            //这里写异常的处理    
        }  
        return string.Empty;  
    }  
    private static string GetMacAddressByNetworkInformation()  
    {  
        string key = "SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\";  
        string macAddress = string.Empty;  
        try  

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值