C#实现软件注册码认证-注册码

"翻身做主"--给自己的软件制作注册码

                            这是另一关于加密的文章【文章】C#实现注册码

  从今天起, 您开发的的任何软件如果您愿意都可以为之加密 --为您的软件制作一款注册机!

  当您看完这篇文章时, 您就可以理直气壮的告诉您的用户 : "喂, 想用我的软件是吧 ? 掏钱!".

  呵呵, 这当然只是给自己壮胆的话, 现在连万能注册机都有了, 人家还怕啥 ? 不过只要您想想微软, 人家再牛B的加密技术都会被国人"鄙视"? 但人家不也在中国大把大把的捞钱吗?

  OK, 不扯了, 我们进入正题.

  同一般的软件注册一样, 我们这里的注册是这样进行的:

  1. 首先根据用户的硬件信息生成24位的机器码

  -- 相当于种子,用于生成随机数

  2. 采用注册机根据特征数字生成一个24位注册码

  -- 相当于伪随机数生成器, 输出长度自己定, 最后用一个格式化函数,将随机数映射到ASCII字符集合

  3. 用户输入注册码注册成功

  假设客户很喜欢您的软件, 也假设他没有破解, 他需要通过以下方式向您取得注册码:

  (1).如果他能上网, 他需要把机器码用Email发给您;

  (2).如果他不能上网, 他可以把机器码用手机短信的方式发给您.

  (3).如果他没有手机, 他可以带着机器码然后坐火车到您的办公室想您要一个注册码.

  --第3条只是为了让您看帖子的时候别太枯燥了, 抱歉.

  现在, 您拿到了客户的机器码后, 如果您同时也收到了他汇的钱, 呵呵, 好像给软件加密就是为了要钱吧? 那么您就可以用客户的机器码生成一个唯一的注册码再用同样的方式给用户, 最后, 用户输入注册码即可!

  需要强调的是客户机器的硬件信息获取方式是有很多种选择的. 这里我们选择最放心的两个硬件: CUP的序列号和硬盘的卷标号. 好了, 下面您就可以一步一步制作一款软件注册机了.

  步骤一: 获得CUP序列号和硬盘序列号的实现代码如下: public string getCpu() 
  { 
  string strCpu = null; 
  ManagementClass myCpu = new ManagementClass("win32_Processor"); 
  ManagementObjectCollection myCpuConnection = myCpu.GetInstances(); 
  foreach (ManagementObject myObject in myCpuConnection) 
  { 
  strCpu = myObject.Properties["Processorid"].Value.ToString(); 
  break; 
  } return strCpu; 
  } 

 // 取得设备硬盘的卷标号 
  public string GetDiskVolumeSerialNumber() 
  { 
  ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); 
  ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"d:\""); 
  disk.Get(); 
  return disk.GetPropertyValue("VolumeSerialNumber").ToString(); 
  } 

步骤二: 收集硬件信息生成机器码, 代码如下:

//生成机器码 
  private void button1_Click(object sender, EventArgs e) 
  { 
  label2.Text = getCpu() + GetDiskVolumeSerialNumber();//获得24位Cpu和硬盘序列号 
  string[] strid = new string[24]; 
  for (int i = 0; i < 24; i++)//把字符赋给数组 
  { 
  strid[i] = label2.Text.Substring(i, 1); 
  } label2.Text = ""; 
  Random rdid = new Random(); 
  for (int i = 0; i < 24; i++)//从数组随机抽取24个字符组成新的字符生成机器三 
  { 
  label2.Text += strid[rdid.Next(0, 24)]; 
  } 
  } 
步骤三: 使用机器码生成软件注册码, 代码如下:

public int[] intCode = new int[127];//用于存密钥 
  public void setIntCode()//给数组赋值个小于10的随机数 
  { 
  Random ra = new Random(); 
  for (int i = 1; i < intCode.Length; i++) 
  { 
  intCode[i] = ra.Next(0, 9); 
  } 
  } 

本博客所有文章如无特别注明均为原创。作者:封笔尘缘复制或转载请以超链接形式注明转自 封笔尘缘
原文地址《C#实现软件注册码认证-注册码
分享到:更多

相关推荐

网友评论(0)