首页 > 其他分享 >机器码生成器

机器码生成器

时间:2023-12-24 17:33:39浏览次数:38  
标签:string para 生成器 机器码 static new csEncrypt uuid

首先看下页面

机器码生成器_序列化

 代码如下

private void btn_Create_Click(object sender, EventArgs e)
        {
            string uuid = GetUuid();
            string jiqima = GenerateMD5(uuid).ToUpper();
            tb_IdCard.Text = jiqima;
        }

        /// <summary>
        /// 获取UUID
        /// </summary>
        /// <returns></returns>
        public static string GetUuid()
        {
            string uuid = null;
            try
            {
                SelectQuery query = new SelectQuery("select * from Win32_ComputerSystemProduct");
                using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
                {
                    foreach (var item in searcher.Get())
                    {
                        using (item) uuid = item["UUID"].ToString();
                    }
                }
                //有些厂商的配件不支持UUId会显示为一堆F
                if (uuid == null || uuid == "FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF")
                {
                    uuid = GetMacAddress();
                }
                return uuid;
            }
            catch (Exception)
            {
                return "unknown";
            }
        }

        /// <summary>  
        /// 获取本机MAC地址  
        /// </summary>  
        /// <returns>本机MAC地址</returns>  
        public static string GetMacAddress()
        {
            try
            {
                string strMac = string.Empty;
                ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    if ((bool)mo["IPEnabled"] == true)
                    {
                        strMac = mo["MacAddress"].ToString();
                    }
                }
                moc = null;
                mc = null;
                return strMac;
            }
            catch
            {
                return "unknown";
            }
        }

        public static string GenerateMD5(string txt)
        {
            using (MD5 mi = MD5.Create())
            {
                byte[] buffer = Encoding.Default.GetBytes(txt);
                //开始加密
                byte[] newBuffer = mi.ComputeHash(buffer);
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < newBuffer.Length; i++)
                {
                    sb.Append(newBuffer[i].ToString("x2"));
                }
                return sb.ToString();
            }
        }


        /// <summary>
        /// 加密、解密
        /// </summary>
        public class EncryptUtilSeal
        {
            private static byte[] key = new byte[] { 78, 56, 61, 94, 12, 88, 56, 63, 66, 111, 102, 77, 1, 186, 97, 45 };
            private static byte[] iv = new byte[] { 36, 34, 42, 122, 242, 87, 2, 90, 59, 117, 123, 63, 72, 171, 130, 61 };

            private static IFormatter S_Formatter = null;

            static EncryptUtilSeal()
            {
                S_Formatter = new BinaryFormatter();//创建一个序列化的对象
            }
            /// <summary>
            /// 采用Rijndael128位加密二进制可序列化对象至文件
            /// </summary>
            /// <param name="para">二进制对象</param>
            /// <param name="filePath">文件路径</param>
            /// <returns></returns>
            public static bool EncryptObject(object para, string filePath)
            {
                //创建.bat文件 如果之前错在.bat文件则覆盖,无则创建
                using (Stream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None))
                {
                    RijndaelManaged RMCrypto = new RijndaelManaged();
                    CryptoStream csEncrypt = new CryptoStream(fs, RMCrypto.CreateEncryptor(key, iv), CryptoStreamMode.Write);
                    S_Formatter.Serialize(csEncrypt, para);//将数据序列化后给csEncrypt
                    csEncrypt.Close();
                    fs.Close();
                    return true;
                }
            }

            /// <summary>
            /// 从采用Rijndael128位加密的文件读取二进制对象
            /// </summary>
            /// <param name="filePath">文件路径</param>
            /// <returns>二进制对象</returns>
            public static object DecryptObject(string filePath)
            {
                //打开.bat文件
                using (Stream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
                {
                    object para;
                    RijndaelManaged RMCrypto = new RijndaelManaged();
                    CryptoStream csEncrypt = new CryptoStream(fs, RMCrypto.CreateDecryptor(key, iv), CryptoStreamMode.Read);
                    para = S_Formatter.Deserialize(csEncrypt); //将csEncrypt反序列化回原来的数据格式;
                    csEncrypt.Close();
                    fs.Close();
                    return para;
                }
            }
        }

        private void btn_Copy_Click(object sender, EventArgs e)
        {
            string text = tb_IdCard.Text.Trim();
            if (text == "nuttertools")
            {
                label1.Visible = true;
                label2.Visible = true;
                tb_ShouQuanTime.Visible = true;
                btn_CreateDat.Visible = true;
            }
            else
            {
                Clipboard.SetDataObject(text);
                MessageBox.Show("复制成功,请联系开发者授权_QQ:1664701345");
            }
        }

        private void btn_CreateDat_Click(object sender, EventArgs e)
        {
            try
            {
                string uuid = GetUuid();
                string jiqima = GenerateMD5(uuid).ToUpper();
                double days =double.Parse(tb_ShouQuanTime.Text.Trim());
                DateTime today = DateTime.Now.AddDays(days);
                string ConfigFilePath = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "CCGiao.DAT");
                //写入
                Hashtable para = new Hashtable();
                para.Add("jqm", jiqima);
                para.Add("days", today);
                EncryptUtilSeal.EncryptObject(para, ConfigFilePath);
                MessageBox.Show("生成成功");
                this.Close();
            }
            catch
            {
                MessageBox.Show("生成失败");
            }

        }
        //获取当前程序级的版本号
        public static Version GetEdition()
        {
            return System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
        }


        private void tb_IdCard_TextChanged(object sender, EventArgs e)
        {
            string te = tb_IdCard.Text.Trim();
            if (te == "nu")
            {
                tb_IdCard.PasswordChar = '*';
            }
        }

标签:string,para,生成器,机器码,static,new,csEncrypt,uuid
From: https://blog.51cto.com/u_16371710/8956214

相关文章

  • 一款基于.NET Core的快速开发框架、支持多种前端UI、内置代码生成器
    前言经常看到有小伙伴在技术群里问有没有什么好用且快速的开发框架推荐的,今天就给大家分享一款基于MITLicense协议开源、免费的.NETCore快速开发框架、支持多种前端UI、内置代码生成器、一款高效开发的利器:WalkingTec.Mvvm框架(简称WTM)。官方项目介绍WalkingTec.Mvvm框架(简称W......
  • 随机幸运号码自动生成器之Python宝典【上】
    一、前言需求背景描述前面我编写了一段能生成随机幸运号码的代码,但是并不实用,每次去买颜色艳丽的票之前都需要在PyCharm上运行并将幸运号码在控制台打印出来为解决这个问题,尝试使用Python的ttkbootstrap实现简单的号码展示,并根据当前日期展现对应类型(超级彩票、彩色球票)的幸运号码,......
  • 迭代器与生成器
    目录一、迭代器与生成器的概念迭代器(Iterator)生成器(Generator)共同点二、使用案例2.1迭代器2.2生成器三、使用场景3.1使用生成器的场景3.2使用迭代器的场景一、迭代器与生成器的概念​ 迭代器(Iterator)和生成器(Generator)在Python中都用于处理序列数据,但它们有一些重要的区......
  • MyBatis-Plus 可视化代码生成器
    MyBatis-Plus可视化代码生成器来啦,让你的开发效率大大提速!!来源:blog.csdn.net/yelangkingwuzuhu/article/details/128077533前言一、mybatis-plus-generator-ui是什么?二、mybatis-plus-generator-ui怎么用?1、mavenpom引入2、新建程序入口,以main函数的方式运行3、......
  • Python 中迭代器与生成器:深度解析与实用指南
    Python作为一门强大而灵活的编程语言,提供了许多高效的工具来处理数据集合。在这些工具中,迭代器(Iterators)和生成器(Generators)是两个重要的概念,它们在数据遍历和惰性计算方面发挥着重要作用。本文将深入探讨Python迭代器和生成器的概念、用法以及它们之间的区别。1.什么是迭代器?迭代......
  • 基于Tensorflow技术开发的计算机毕业设计辅助生成器(使用AI大模型技术)
    这是一个辅助生成计算机毕业设计的工具,可以自动完成毕业设计的源码。它基于几百个github上面开源的java和python项目,运用tensorflow技术,训练出了AI大模型。基本实现了计算机毕业设计生成器,能够初步生成Java或python基本源码。目前该项目处理实验阶段,还不成熟,成功率55%左右。体......
  • 独立游戏 - 隐私政策生成器
    作为独立游戏开发者,生存空间,可以说是越来越苛刻了(当然了,越来越规范是好事情)最近参加AR的比赛,提交程序,需要隐私政策,经过一番折腾,找到了解决方案。 https://privacy.1ts.fun/这是一个隐私政策生成器,根据自己的需要,选择选项,然后生成,并导出txt。然后用word简单编辑,调整下格式,导......
  • day15(生成器)
    1.生成器对象1.本质 还是内置有__iter__和__next__的迭代器对象2.区别 迭代器对象是解释器自动提供的 数据类型\文件对象>>>:迭代器对象 生成器对象是程序员编写出来的 代码、关键字>>>:迭代器对象(生成器)3.创建生成器的基本语法 函数体代码中填写yield关键字......
  • Python迭代器和生成器
    【一】迭代器介绍迭代器即用来迭代取值的工具,而迭代是重复反馈过程的活动其目的通常是为了逼近所需的目标或结果,每一次对过程的重复称为一次“迭代”而每一次迭代得到的结果会作为下一次迭代的初始值,单纯的重复并不是迭代whileTrue:msg=input(">>:").strip()......
  • HydroOJ 从入门到入土(7)Hydro自带数据生成器使用说明(>=4.10.1)
    Hydro更新了一个新功能,可以直接用自带的数据生成器,在线生成数据,简单记录一下使用方法目录1.文件准备2.使用步骤3.注意事项4.文件模版1.文件准备gen.py(数据生成器,后附模版)std.cpp(标准程序,后附模版)文件名随意,其他的类型应该也行,不过没试.2.使用步......