zoukankan      html  css  js  c++  java
  • C#简单通用的软件注册类

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Management;//硬件获取
    using System.IO;//
    using System.Security.Cryptography;//

    namespace PurviewSoft
    {
        public class PurviewSoftClass
        {
            /// <summary>
            /// 获取CPU编号
            /// </summary>
            /// <returns>返回CPU序列号</returns>
            private static string GetCPUSerialNumber()
            {
                string cpuSerialNumber = string.Empty;
                ManagementClass mc = new ManagementClass("Win32_processor");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    cpuSerialNumber = mo["ProcessorId"].ToString();
                    break;
                }
                mc.Dispose();
                moc.Dispose();
                return cpuSerialNumber;
            }

            /// <summary>
            /// DES加密字符串
            /// </summary>
            /// <param name="encryptString">待加密的字符串</param>
            /// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
            private static string EncryptString(string encryptString)
            {
                try
                {
                    byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
                    byte[] rgbKey = Encoding.UTF8.GetBytes("jiao1990");
                    byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
                    DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();

                    MemoryStream mStream = new MemoryStream();
                    using (CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, IV), CryptoStreamMode.Write))
                    {
                        cStream.Write(inputByteArray, 0, inputByteArray.Length);
                        cStream.FlushFinalBlock();
                    }
                    return Convert.ToBase64String(mStream.ToArray());
                }
                catch
                {
                    return encryptString;
                }
            }

            //-------------------------------------------------------------------------------------------------------------------------

            /// <summary>
            /// 生成的用户ID属性
            /// </summary>
            public static string UserId
            {
                get { return GetCPUSerialNumber(); }
            }

            /// <summary>
            /// 获取由程序生成的正确密匙(管理员使用)
            /// </summary>
            /// <param name="userId">用户反馈给管理员的产品编号</param>
            /// <returns>正确的授权号</returns>
            public static string GetUserPassWord(string userId)
            {
                //分析密码是否正确
                string userPassWord = EncryptString(userId);
                return userPassWord;
            }

            /// <summary>
            /// 获取用户是否通过验证
            /// </summary>
            /// <param name="passWord">用户输入的密码</param>
            /// <returns>true:是会员,false:不是会员</returns>
            public static bool GetUserRule(string passWord)
            {
                bool isUser = false;
                try
                {
                    //分析用户输入的密码是否正确
                    string userId = GetCPUSerialNumber();//获取CPU编号
                    string userPassWord = EncryptString(userId);//加密CPU编号
                    if (passWord == userPassWord)
                    {
                        isUser = true;
                    }
                }
                catch
                { }
                return isUser;
            }

            /// <summary>
            /// 把密码写入配置文档
            /// </summary>
            /// <param name="passWord">用户输入的密码</param>
            /// <param name="userInfoFilePath">保存密码的配置文件路径(保存为TXT或INI格式二进制文件)</param>
            /// <returns>trur: 写入成功,false:写入失败</returns>
            public static bool WriteUserInfo(string passWord, string userInfoFilePath)
            {
                bool isSucess = false;
                try
                {
                    bool isUser = GetUserRule(passWord);//获取是否通过会员验证
                    if (isUser)
                    {
                        //创建保存密码的配置文档
                        using (StreamWriter sw = File.CreateText(userInfoFilePath))
                        {
                            sw.WriteLine(passWord);
                        }
                    }
                }
                catch
                { }
                return isSucess;
            }

            /// <summary>
            /// 获取配置文件中记载的用户密码
            /// </summary>
            /// <param name="userInfoFilePath">配置文件路径</param>
            /// <returns>记载的用户密码</returns>
            public static string readUserInfo(string userInfoFilePath)
            {
                if (File.Exists(userInfoFilePath))//如果存在注册配置文件
                {
                    using (StreamReader sr = File.OpenText(userInfoFilePath))
                    {
                        String input;
                        input = sr.ReadLine();
                        return input;
                    }
                }
                else
                {
                    return null;
                }
            }
        }
    }

  • 相关阅读:
    忆2011年的秋天:一个人的项目
    横看成岭侧成峰,远近高低各不同——从面试官的角度谈面试
    使用Scratch进行少儿编程
    初识少儿编程
    升级openssl
    CentOS设置虚拟网卡做NAT方式和Bridge方式桥接
    iptables conntrack有什么用
    nohup和&的区别
    Linux就这个范儿 第12章 一个网络一个世界
    一个由INode节点爆满引起的业务故障
  • 原文地址:https://www.cnblogs.com/mane/p/2075123.html
Copyright © 2011-2022 走看看