在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → C# 简单的程序绑定、加密(类似加密狗)

C# 简单的程序绑定、加密(类似加密狗)

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:0.25M
  • 下载次数:40
  • 浏览次数:822
  • 发布时间:2020-01-04
  • 实例类别:一般编程问题
  • 发 布 人:robot666
  • 文件格式:.zip
  • 所需积分:2
 相关标签: 程序 C# 加密

实例介绍

【实例简介】类似加密狗的简单功能实现。使软件只能在当前电脑上使用,更换电脑后无法使用,更改系统时间也无效。

【实例截图】

from clipboard

【核心代码】

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Management;         //这两个需要在解决方案资源管理里右键点“引用”,添加引用,找到system.management
using System.Management.Instrumentation;
using System.IO;
using System.Web;
using System.Threading;
using System.Runtime.InteropServices;
using System.IO.Ports;
using Microsoft.Win32;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        RegistryKey rsgwrite = null;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //string CPUSerialNumber = GetCPUSerialNumber();
            //string DiskSerialNumber = GetDiskSerialNumber();
            //textBox1.Text = textBox1.Text   CPUSerialNumber   "\r\n";
            //textBox1.Text = textBox1.Text   DiskSerialNumber   "\r\n";
            //textBox1.Text = textBox1.Text   GetMoAddress()   "\r\n";
            //mac macaddress = new mac();
            //textBox2.Text = textBox2.Text   macaddress.maczhuanhuan(GetMoAddress())   "\r\n";
            //CPUAndHardDisk cpu = new CPUAndHardDisk();
            //textBox2.Text = textBox2.Text   cpu.cpuandharddisk(CPUSerialNumber)   "\r\n";
            //textBox2.Text = textBox2.Text   cpu.cpuandharddisk(DiskSerialNumber)   "\r\n";
            //textBox2.Text = textBox2.Text   "ABOP"   macaddress.maczhuanhuan(GetMoAddress())   cpu.cpuandharddisk(CPUSerialNumber)   cpu.cpuandharddisk(DiskSerialNumber)   "()1";
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            int changdu = 0;                             //用来判断是否配置文件有误,如果有误,便不执行时间比对
            string CPUSerialNumber = GetCPUSerialNumber();
            string DiskSerialNumber = GetDiskSerialNumber();
            mac macaddress = new mac();
            CPUAndHardDisk cpu = new CPUAndHardDisk();

            //把换算过后的数据合并
            string zhonghe = macaddress.maczhuanhuan(GetMoAddress())   cpu.cpu(CPUSerialNumber)   cpu.harddisk(DiskSerialNumber);
            Random suijisu = new Random(System.DateTime.Now.Millisecond);  //产生30个不重复的随机数,括号里的datatime是可以每次打开都产生不同的
            string suiji = null;
            for (int j = 1; j <= 30; j  )
            {
                int i = suijisu.Next(33, 97);
                suiji = suiji   ((char)i).ToString();
            }
            suiji = mac.EncodeBase64(Encoding.UTF8, suiji);
            ReadWriteiniDate inifile = new ReadWriteiniDate();
            //string path = Environment.CurrentDirectory   "\\config.ini";
            DateTime now = DateTime.Now;
            string inifile1 = inifile.ReadiniDate("Pwd", "key");
            string year = now.Year.ToString();
            string month = now.Month.ToString();
            string day = now.Day.ToString();
            string RegistValue = null;

            if (timekeeper())
            {
                rsgwrite = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\TimeKeeper", true);
                if (rsgwrite.GetValue("timer").ToString() == "zjkxWenhua")
                {
                    Registry.LocalMachine.CreateSubKey("SOFTWARE\\Microsoft\\PPLLive");              //创建
                    rsgwrite = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\PPLLive", true);    //true表可以修改
                    rsgwrite.SetValue("Zll", suiji   (now.Year   796)   ",["   now.Month   "#*"   now.Day   zhonghe);       //写入
                    rsgwrite.Close();                                                                      //关闭
                }
                else
                {
                    rsgwrite.SetValue("timer", (Convert.ToInt32(rsgwrite.GetValue("timer"))   1).ToString());
                    try                                                //可能有异常,放在try块中
                    {
                        rsgwrite = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\PPLLive", true); //true表可修改
                        RegistValue = rsgwrite.GetValue("Zll").ToString();           //读取值
                        if (Convert.ToInt32(RegistValue.ToString().Length) < (suiji.Length   10   zhonghe.Length))  //如果值少或者为空
                        {
                            MessageBox.Show("没有找到值!");
                            this.Close();
                        }
                    }
                    catch   //捕获异常 
                    {
                        MessageBox.Show("不是本机,请检查!");          //显示异常信息
                        this.Close();
                    }
                    try
                    {
                        if (RegistValue.Substring(RegistValue.Length - zhonghe.Length) == zhonghe) { }
                        else
                        {
                            if (MessageBox.Show("不是本机!", "Attion,please!") == DialogResult.OK)
                            {
                                this.Close();
                            }
                        }
                    }
                    catch
                    {
                        MessageBox.Show("不是本机,请检查!");          //显示异常信息
                        this.Close();
                    }
                } 
            }
            else
            {
                MessageBox.Show("不是本机");
                this.Close();
            }
            Registry.LocalMachine.CreateSubKey("SOFTWARE\\Microsoft\\TimeKeeper");
            rsgwrite = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\TimeKeeper", true);
            rsgwrite.SetValue("timer", "0");
            rsgwrite.Close();             //关闭
        }
        public static bool timekeeper()
        {
            RegistryKey rsgwrite1 = null;
            try
            {
                rsgwrite1 = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\TimeKeeper", true);
                if (rsgwrite1 != null)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            catch
            {
                return false;
            }
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        // 获取cpu序列号
        public static string GetCPUSerialNumber()
        {
            try
            {
                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();
                if (cpuSerialNumber == "" || cpuSerialNumber ==null)
                {
                    cpuSerialNumber = "ixTVEQzTkYy";
                }
                return cpuSerialNumber;
            }
            catch
            {
                return "ixTVEQzTkYy";
            }
        }

        // 获取硬盘序列号
        public static string GetDiskSerialNumber()
        {
            try
            {
                ManagementObjectSearcher mos = new ManagementObjectSearcher();
                mos.Query = new SelectQuery("Win32_DiskDrive", "", new string[] { "PNPDeviceID", "Signature" });
                ManagementObjectCollection myCollection = mos.Get();
                ManagementObjectCollection.ManagementObjectEnumerator em = myCollection.GetEnumerator();
                em.MoveNext();
                ManagementBaseObject moo = em.Current;
                string id = moo.Properties["signature"].Value.ToString().Trim();
                if (id == "" || id==null )
                {
                    id = "i9fYConSTpWQ1";
                }
                return id;
            }
            catch
            {
                return "i9fYConSTpWQ1";  
            }

        }

        //获取网卡硬件地址
        //public static string GetMoAddress()
        //{
        //    string MoAddress = " ";
        //    using (ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"))
        //    {
        //        ManagementObjectCollection moc2 = mc.GetInstances();
        //        foreach (ManagementObject mo in moc2)
        //        {
        //            if ((bool)mo["IPEnabled"] == true)
        //                MoAddress = mo["MacAddress"].ToString();
        //            mo.Dispose();
        //        }
        //    }
        //    return MoAddress.ToString ();
        //}
        //获取网卡硬件地址
        public string GetMoAddress()
        {
            try
            {
                string mac = null;
                ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection queryCollection = query.Get();
                foreach (ManagementObject mo in queryCollection)
                {
                    //if (mo["IPEnabled"].ToString() == "True")  //判断是否有IP地址
                    if (mo["MacAddress"] == null)
                    {
                    }
                    else
                    {
                        mac = mo["MacAddress"].ToString();
                        if (mac != "" || mac != null)
                        {
                            break;
                        }
                    }
                }
                if (mac == ""|| mac==null )
                {
                    mac = "1PUyc2VGBYQU4pTjU";
                }
                return mac;
            }
            catch
            {
                return "1PUyc2VGBYQU4pTjU";
            }
        }
    }
}


标签: 程序 C# 加密

实例下载地址

C# 简单的程序绑定、加密(类似加密狗)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警