zoukankan      html  css  js  c++  java
  • 生成机器码

     public class SystemInfo   

      {     

        public int[] intCode = new int[127];//存储密钥      

       public int[] intNumber = new int[25];//存机器码的Ascii值  

       public char[] Charcode = new char[25];//存储机器码字      

       /// <summary>  

      /// 取得设备硬盘的卷标号      

      /// </summary>    

     /// <returns></returns>     

        public string GetDiskVolumeSerialNumber()    

         {      

           ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");     

            ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid="c:"");     

            disk.Get();      

           return disk.GetPropertyValue("VolumeSerialNumber").ToString();  

           }

            /// <summary>     

        /// 获得CPU的序列号   

          /// </summary>    

         /// <returns></returns>    

         public string getCpu()     

        {      

           string strCpu = null;     

            ManagementClass myCpu = new ManagementClass("win32_Processor");   

              ManagementObjectCollection myCpuConnection = myCpu.GetInstances();    

             foreach (ManagementObject myObject in myCpuConnection)    

             {       

              strCpu = myObject.Properties["Processorid"].Value.ToString();    

                 break;         

        }           

      return strCpu;  

           }        

            /// <summary>     

        /// 生成机器码  

           /// </summary>   

          /// <returns></returns>     

        public string getMNum()   

          {         

        try       

          {       

              string strNum = getCpu() + GetDiskVolumeSerialNumber();//获得24位Cpu和硬盘序列号     

                string strMNum = GetMD5Hash(strNum).Substring(0, 24);//从生成的字符串中取出前24个字符做为机器码     

                return strMNum;        

         }

    catch{     

                return GetMD5Hash("phper.in").Substring(0, 24);   

              }    

         }

            public void setIntCode()//给数组赋值小于10的数    

         {         

        for (int i = 1; i < intCode.Length; i++)      

           {              

       intCode[i] = i % 9;   

              }       

      }

            /// <summary>    

         /// 生成注册码     

        /// </summary>    

         /// <returns></returns>     

        public string getRNum()     

        {      

           setIntCode();//初始化127位数组       

          string MNum = this.getMNum();//获取注册码    

             for (int i = 1; i < Charcode.Length; i++)//把机器码存入数组中   

              {          

           Charcode[i] = Convert.ToChar(MNum.Substring(i - 1, 1));   

              }         

        for (int j = 1; j < intNumber.Length; j++)//把字符的ASCII值存入一个整数组中。  

               {              

       intNumber[j] = intCode[Convert.ToInt32(Charcode[j])] + Convert.ToInt32(Charcode[j]);   

              }         

        string strAsciiName = "";//用于存储注册码       

          for (int j = 1; j < intNumber.Length; j++)       

          {            

         if (intNumber[j] >= 48 && intNumber[j] <= 57)//判断字符ASCII值是否0-9之间   

                  {        

                 strAsciiName += Convert.ToChar(intNumber[j]).ToString();    

                 }          

           else if (intNumber[j] >= 65 && intNumber[j] <= 90)//判断字符ASCII值是否A-Z之间    

                 {               

          strAsciiName += Convert.ToChar(intNumber[j]).ToString();     

                }          

           else if (intNumber[j] >= 97 && intNumber[j] <= 122)//判断字符ASCII值是否a-z之间    

                 {               

          strAsciiName += Convert.ToChar(intNumber[j]).ToString();      

               }         

            else//判断字符ASCII值不在以上范围内         

            {          

               if (intNumber[j] > 122)//判断字符ASCII值是否大于z          

               {                       

      strAsciiName += Convert.ToChar(intNumber[j] - 10).ToString();     

                    }              

           else              

           {                

             strAsciiName += Convert.ToChar(intNumber[j] - 9).ToString();    

                     }         

            }        

         }        

         return strAsciiName;//返回注册码    

         }

        

  • 相关阅读:
    数据库性能优化摘录
    关于海量用户访问的通用技术架构的一些思考
    Rose建模示例
    ASP.NET2.0下实现分布式StateServer(状态服务器)
    Apache + Tomcat 实现简单集群
    StateServer 解决 Session过期和分布式保存Session
    ASP.NET动态修改浏览器title,keywords,descrtptions,csslink,meta,icon等
    用户登录体验(自动时间锁)
    百度ueditor一些使用技巧
    C# AJAX中弹出提示窗口
  • 原文地址:https://www.cnblogs.com/zhangruisoldier/p/4282404.html
Copyright © 2011-2022 走看看