服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - C# 获取硬盘号,CPU信息,加密解密技术的步骤

C# 获取硬盘号,CPU信息,加密解密技术的步骤

2022-10-28 12:23风云SH变幻 C#

这篇文章主要介绍了C# 获取硬盘号,CPU信息,加密解密技术的步骤,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下

在我们编写好一款软件后,我们不想别人盗用我们的软件,这时候我们可以采用注册的方式来保护我们的作品。这时候我们可能就需要简单了解一下加密解密技术,下面是我的简单总结:
第一步:程序获得运行机的唯一标示(比如:网卡号,CPU编号,硬盘号等等)。
第二步:程序将获得的唯一标示加密,然后有用户或者程序将加密后的标示发送给你。
第三步:你将加密后的标示解密(其实这时候你获得的就是:网卡号,CPU编号,硬盘号)然后你再将网卡号,CPU编号,硬盘号加密发送给客户注册。
第四步:程序将你发送的注册号进行解密,解密后的编号其实也是:网卡号,CPU编号,硬盘号。
第五步:每当程序启动,首先解密你发送的注册号,然后读取网卡号,CPU编号,硬盘号等等,最好进行验证,看两个标示是否一样。
具体实例看代码:

第一步:程序获得运行机的唯一标示:硬盘号,CPU信息

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//获取硬盘号<script type="text/JavaScript"> alimama_pid="mm_10249644_1605763_5018464"; alimama_type="f"; alimama_sizecode ="tl_1x1_8"; alimama_fontsize=12; alimama_bordercolor="FFFFFF"; alimama_bgcolor="FFFFFF"; alimama_titlecolor="0000FF"; alimama_underline=0; alimama_height=22; alimama_width=0; </script> <script src="http://a.alimama.cn/inf.js" type=text/javascript> </script>
private string GetDiskID()
 try
 {
  //获取硬盘ID
  String HDid = "";
  ManagementClass mc = new ManagementClass("Win32_DiskDrive");
  ManagementObjectCollection moc = mc.GetInstances();
  foreach (ManagementObject mo in moc)
  {
   HDid = (string)mo.Properties["Model"].Value;
  }
  moc = null;
  mc = null;
  return HDid;
 }
 catch
 {
  return "";
 }
 finally
 {
 }
}
 
//获取CPU信息
private string GetCpuInfo()
{
 try
 {
  string cpuInfo = "";//cpu序列号
  ManagementClass cimobject = new ManagementClass("Win32_Processor");
  ManagementObjectCollection moc = cimobject.GetInstances();
  foreach (ManagementObject mo in moc)
  {
   cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
  }
  return cpuInfo;
 }
 catch
 {
  this.senRegeditID.Enabled = false;
  this.GetId.Enabled = true;
 }
 return "";
}

第二步:程序将获得的唯一标示加密

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//加密 <script type="text/JavaScript"> alimama_pid="mm_10249644_1605763_5027492"; alimama_type="f"; alimama_sizecode ="tl_1x5_8"; alimama_fontsize=12; alimama_bordercolor="FFFFFF"; alimama_bgcolor="FFFFFF"; alimama_titlecolor="0000FF"; alimama_underline=0; alimama_height=22; alimama_width=0; </script> <script src="http://a.alimama.cn/inf.js" type=text/javascript> </script>
static public string Encrypt(string PlainText)
{
 string KEY_64 = "dafei250";
 string IV_64 = "DAFEI500";
 byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
 byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
 DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
 int i = cryptoProvider.KeySize;
 MemoryStream ms = new MemoryStream();
 CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);
 StreamWriter sw = new StreamWriter(cst);
 sw.Write(PlainText);
 sw.Flush();
 cst.FlushFinalBlock();
 sw.Flush();
 return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
}

第三步:你将加密后的标示解密(注册的时候解密)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//解密
public static string Decrypt(string CypherText)
{
 string KEY_64 = "haeren55"; //必须是8个字符(64Bit)
 string IV_64 = "HAEREN55"; //必须8个字符(64Bit)
 try
 {
  byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
  byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
  byte[] byEnc;
  try
  {
   byEnc = Convert.FromBase64String(CypherText);
  }
  catch
  {
   return null;
  }
  DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
  MemoryStream ms = new MemoryStream(byEnc);
  CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
  StreamReader sr = new StreamReader(cst);
  return sr.ReadToEnd();
 }
 catch { return "无法解密!"; }
}

以上就是C# 获取硬盘号,CPU信息,加密解密技术的步骤的详细内容,更多关于C# 获取硬盘号,CPU信息,加密解密技术的资料请关注服务器之家其它相关文章!

原文链接:https://www.cnblogs.com/wzhk009/p/14206611.html

延伸 · 阅读

精彩推荐
  • C#C#字体池技术实现代码详解

    C#字体池技术实现代码详解

    在本篇文章里小编给大家整理的是关于C#字体池技术实现代码详解内容,有需要的朋友们可以学习下。...

    未闻·Yokeqi6122022-08-10
  • C#C#.NET 图片水印添加代码

    C#.NET 图片水印添加代码

    这篇文章主要为大家详细介绍了C#.NET 图片水印添加代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    熊哥8622021-12-01
  • C#C#实现在线点餐系统

    C#实现在线点餐系统

    这篇文章主要为大家详细介绍了C#实现在线点餐系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    Mr小布懂7172022-08-10
  • C#Unity实现注册登录模块

    Unity实现注册登录模块

    这篇文章主要为大家详细介绍了Unity实现注册登录模块,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    DwarfTitan9302022-08-28
  • C#unity shader实现较完整光照效果

    unity shader实现较完整光照效果

    这篇文章主要为大家详细介绍了unity shader实现较完整光照效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    周者11152022-08-10
  • C#Unity3D撤回命令开发详解

    Unity3D撤回命令开发详解

    这篇文章主要为大家详细介绍了Unity3D撤回命令开发,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    JayW就是我吖7992022-07-11
  • C#C# 使用BitBlt进行窗口抓图的示例

    C# 使用BitBlt进行窗口抓图的示例

    这篇文章主要介绍了C# 使用BitBlt进行窗口抓图的示例,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...

    xhubobo7132022-10-26
  • C#C# winform实现右下角弹出窗口结果的方法

    C# winform实现右下角弹出窗口结果的方法

    这篇文章主要介绍了C# winform实现右下角弹出窗口结果的方法,结合实例形式分析了C#窗口操作的相关技巧,需要的朋友可以参考下...

    廖先生6442022-01-10