.Net常用技巧_軟體註冊碼

來源:互聯網
上載者:User

標籤:des   style   blog   color   os   io   

using System;using System.Collections.Generic;using System.Text;using System.Management;using Utility;using EXDataControl;using System.Collections;using Microsoft.Win32;namespace MyTool{    public class SoftReg    {        /// <summary>        /// 擷取硬碟卷標號        /// </summary>        /// <returns></returns>        public static 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 static string GetCpu()        {            string strCpu = null;            ManagementClass myCpu = new ManagementClass("win32_Processor");            ManagementObjectCollection myCpuCollection = myCpu.GetInstances();            foreach (ManagementObject myObject in myCpuCollection)            {                strCpu = myObject.Properties["Processorid"].Value.ToString();            }            return strCpu;        }        /// <summary>        /// 產生機器碼        /// </summary>        /// <returns></returns>        public static string GetMNum()        {            string strNum = GetCpu() + GetDiskVolumeSerialNumber();            string strMNum = strNum.Substring(0, 24);    //截取前24位作為機器碼            return strMNum;        }        public static int[] intCode = new int[127];    //儲存體金鑰        public static char[] charCode = new char[25];  //儲存ASCII碼        public static int[] intNumber = new int[25];   //儲存ASCII碼值        //初始化密鑰        public static void SetIntCode()        {            for (int i = 1; i < intCode.Length; i++)            {                intCode[i] = i % 9;            }        }        /// <summary>        /// 產生註冊碼        /// </summary>        /// <returns></returns>        public static string GetRNum()        {            SetIntCode();            string strMNum = GetMNum();            for (int i = 1; i < charCode.Length; i++)   //儲存機器碼            {                charCode[i] = Convert.ToChar(strMNum.Substring(i - 1, 1));            }            for (int j = 1; j < intNumber.Length; j++)  //改變ASCII碼值            {                intNumber[j] = Convert.ToInt32(charCode[j]) + intCode[Convert.ToInt32(charCode[j])];            }            string strAsciiName = "";   //註冊碼            for (int k = 1; k < intNumber.Length; k++)  //產生註冊碼            {                if ((intNumber[k] >= 48 && intNumber[k] <= 57) || (intNumber[k] >= 65 && intNumber[k]                    <= 90) || (intNumber[k] >= 97 && intNumber[k] <= 122))  //判斷如果在0-9、A-Z、a-z之間                {                    strAsciiName += Convert.ToChar(intNumber[k]).ToString();                }                else if (intNumber[k] > 122)  //判斷如果大於z                {                    strAsciiName += Convert.ToChar(intNumber[k] - 10).ToString();                }                else                {                    strAsciiName += Convert.ToChar(intNumber[k] - 9).ToString();                }            }            string strEncrypt = Utility.DESEncrypt.Encrypt(strAsciiName);     //加密            return strEncrypt;        }        /// <summary>        /// 產生試用版註冊碼(取註冊碼,前N位改成當前日期)        /// </summary>        /// <returns></returns>        public static string GetBNum(EXDataControl.EXDataCenter dc)        {            string strDecrypt = Utility.DESEncrypt.Decrypt(GetRNum());  //先解密註冊碼            string CurrentDateTime = dc.getServerDateTime().Substring(0, 10);            strDecrypt = strDecrypt.Substring(10, strDecrypt.Length - 10);            string strKey = CurrentDateTime + strDecrypt;   //10位日期+註冊碼後14位            string strEncrypt = Utility.DESEncrypt.Encrypt(strKey);     //加密            return strEncrypt;        }    }}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.