php开发的程序怎么用加密狗加密,C# 简单的程序绑定、加密(类似加密狗)

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

【实例截图】

d008a7e27c2457665e97147b220fd897.png

【核心代码】

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";

}

}

}

}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值