| 订阅 | 在线投稿
分享
 
 
当前位置: 王朝网络 >> c# >> 简述.Net下的应用程序授权实战步骤
 

简述.Net下的应用程序授权实战步骤

2008-12-13 08:23:29 编辑來源:互联网 繁體版 评论
 
 
  看了“看了下面那篇“Crack别人应用程序”的文章有感,简述.Net下的应用程序授权。”,自己实际操作了把得出的心得 。这里原理啊背景啊什么都不介绍了,笑望人生已经在他的BLOG上都写的相当清楚了,有什么不细节不明白的可以去看原文。推荐先大概看下原文,现看我下面的步骤,然后再回头去研究原文的细节。由于我自己写的实例是用在公司一项目中,源代码就不方便放出来了,嘿嘿。

  第一步:生成一组公钥和私钥,公钥用于你发布程序,私钥属于注册码生成。view plaincopy to clipboardprint?

  using(RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())

  {

  // 公钥

  string pubkey = rsa.ToXmlString(false);

  

  // 私钥

  string prikey = rsa.ToXmlString(true);

  

  //如果是webForm就Response.Write(pubkey + ”<br/>” + prikey); 下

  //如果是winForm就MessageBox.Show("公钥:" + pubkey + "\r\n私钥:" + prikey); 下

  }

  using(RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())

  {

  // 公钥

  string pubkey = rsa.ToXmlString(false);

  // 私钥

  string prikey = rsa.ToXmlString(true);

  //如果是webForm就Response.Write(pubkey + ”<br/>” + prikey); 下

  //如果是winForm就MessageBox.Show("公钥:" + pubkey + "\r\n私钥:" + prikey); 下

  }第二步:取得机器硬件编码。我选用CUP的编号。view plaincopy to clipboardprint?

  /// <summary>

  /// 获取CPU编号

  /// </summary>

  /// <returns></returns>

  public string GetCpuId()

  {

  

  ManagementClass mc = new ManagementClass("Win32_Processor");

  ManagementObjectCollection moc = mc.GetInstances();

  

  String strCpuID = null;

  foreach (ManagementObject mo in moc)

  {

  strCpuID = mo.Properties["ProcessorId"].Value.ToString();

  break;

  }

  return strCpuID;

  

  }

  /// <summary>

  /// 获取CPU编号

  /// </summary>

  /// <returns></returns>

  public string GetCpuId()

  {

  ManagementClass mc = new ManagementClass("Win32_Processor");

  ManagementObjectCollection moc = mc.GetInstances();

  String strCpuID = null;

  foreach (ManagementObject mo in moc)

  {

  strCpuID = mo.Properties["ProcessorId"].Value.ToString();

  break;

  }

  return strCpuID;

  }第三步:编写注册码生成WinForm程序,使用CUP的编号来生成注册码,当然你也可以用 WebForm来写。view plaincopy to clipboardprint?

  using(RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())

  {

  rsa.FromXmlString(“私钥”);

  // 加密对象

  RSAPKCS1SignatureFormatter f = new RSAPKCS1SignatureFormatter(rsa);

  f.SetHashAlgorithm("SHA1");

  byte[] source = System.Text.ASCIIEncoding.ASCII.GetBytes(“CUP的编号”);

  SHA1Managed sha = new SHA1Managed();

  byte[] result = sha.ComputeHash(source);

  

  byte[] b = f.CreateSignature(result);

  

  msg.Text = Convert.ToBase64String(b); //这里就得到了string形式的注册码

  

  //再接下来你可以把生成的注册码保存成license.lic文件,license.lic文件也没什么特别的格式就是相当于把注册吗保存到一个txt文件中,无非这个txt文件的后缀改成了lic,你要高兴也可保存成其它多种格式。

  //也可以保存在注册表中或是web.config中,总之能让你的发布的应用程序能读的到就行。

  }

  using(RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())

  {

  rsa.FromXmlString(“私钥”);

  // 加密对象

  RSAPKCS1SignatureFormatter f = new RSAPKCS1SignatureFormatter(rsa);

  f.SetHashAlgorithm("SHA1");

  byte[] source = System.Text.ASCIIEncoding.ASCII.GetBytes(“CUP的编号”);

  SHA1Managed sha = new SHA1Managed();

  byte[] result = sha.ComputeHash(source);

  byte[] b = f.CreateSignature(result);

  msg.Text = Convert.ToBase64String(b); //这里就得到了string形式的注册码

  //再接下来你可以把生成的注册码保存成license.lic文件,license.lic文件也没什么特别的格式就是相当于把注册吗保存到一个txt文件中,无非这个txt文件的后缀改成了lic,你要高兴也可保存成其它多种格式。

  //也可以保存在注册表中或是web.config中,总之能让你的发布的应用程序能读的到就行。

  }第四步:在发布的程序相关地方添加对注册码有效性的验证。如添加在程序启动的时候,程序执行特定操作的时候等等,总之看你的需要做有效性的验证。view plaincopy to clipboardprint?

  //相关注册码获取代码……

  //以下代码是发布程序使用公钥对注册码进行验证

  using(RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())

  {

  rsa.FromXmlString(“公钥”);

  RSAPKCS1SignatureDeformatter f = new RSAPKCS1SignatureDeformatter(rsa);

  

  f.SetHashAlgorithm("SHA1");

  

  byte[] key = Convert.FromBase64String(“注册码”);

  

  SHA1Managed sha = new SHA1Managed();

  byte[] name = sha.ComputeHash(ASCIIEncoding.ASCII.GetBytes(“注册码”));

  if(f.VerifySignature(name,key))

  msg.Text = "验证成功"; //可以return true;等方式返回相应的状态

  else

  msg.Text = "不成功";

  }
 
 
 
 
上一篇《.net同站点多虚拟目录下的Session共享思路》
下一篇《简述.Net下的应用程序授权实战步骤》
 
 
 
 
 
 
日版宠物情人插曲《Winding Road》歌词

日版宠物情人2017的插曲,很带节奏感,日语的,女生唱的。 最后听见是在第8集的时候女主手割伤了,然后男主用嘴帮她吸了一下,插曲就出来了。 歌手:Def...

兄弟共妻,我成了他们夜里的美食

老钟家的两个儿子很特别,就是跟其他的人不太一样,魔一般的执着。兄弟俩都到了要结婚的年龄了,不管自家老爹怎么磨破嘴皮子,兄弟俩说不娶就不娶,老父母为兄弟两操碎了心...

如何磨出破洞牛仔裤?牛仔裤怎么剪破洞?

把牛仔裤磨出有线的破洞 1、具体工具就是磨脚石,下面垫一个硬物,然后用磨脚石一直磨一直磨,到把那块磨薄了,用手撕开就好了。出来的洞啊很自然的。需要猫须的话调几...

我就是扫描下图得到了敬业福和爱国福

先来看下敬业福和爱国福 今年春节,支付宝再次推出了“五福红包”活动,表示要“把欠大家的敬业福都还给大家”。 今天该活动正式启动,和去年一样,需要收集“五福”...

冰箱异味产生的原因和臭味去除的方法

有时候我们打开冰箱就会闻到一股异味,冰箱里的这种异味是因为一些物质发出的气味的混合体,闻起来让人恶心。 产生这些异味的主要原因有以下几点。 1、很多人有这种习...

 
 
 
  看了“看了下面那篇“Crack别人应用程序”的文章有感,简述.Net下的应用程序授权。”,自己实际操作了把得出的心得 。这里原理啊背景啊什么都不介绍了,笑望人生已经在他的BLOG上都写的相当清楚了,有什么不细节不明白的可以去看原文。推荐先大概看下原文,现看我下面的步骤,然后再回头去研究原文的细节。由于我自己写的实例是用在公司一项目中,源代码就不方便放出来了,嘿嘿。   第一步:生成一组公钥和私钥,公钥用于你发布程序,私钥属于注册码生成。view plaincopy to clipboardprint? using(RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) { // 公钥 string pubkey = rsa.ToXmlString(false); // 私钥 string prikey = rsa.ToXmlString(true); //如果是webForm就Response.Write(pubkey + ”<br/>” + prikey); 下 //如果是winForm就MessageBox.Show("公钥:" + pubkey + "\r\n私钥:" + prikey); 下 } using(RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) { // 公钥 string pubkey = rsa.ToXmlString(false); // 私钥 string prikey = rsa.ToXmlString(true); //如果是webForm就Response.Write(pubkey + ”<br/>” + prikey); 下 //如果是winForm就MessageBox.Show("公钥:" + pubkey + "\r\n私钥:" + prikey); 下 }  第二步:取得机器硬件编码。我选用CUP的编号。view plaincopy to clipboardprint? /// <summary> /// 获取CPU编号 /// </summary> /// <returns></returns> public string GetCpuId() { ManagementClass mc = new ManagementClass("Win32_Processor"); ManagementObjectCollection moc = mc.GetInstances(); String strCpuID = null; foreach (ManagementObject mo in moc) { strCpuID = mo.Properties["ProcessorId"].Value.ToString(); break; } return strCpuID; } /// <summary> /// 获取CPU编号 /// </summary> /// <returns></returns> public string GetCpuId() { ManagementClass mc = new ManagementClass("Win32_Processor"); ManagementObjectCollection moc = mc.GetInstances(); String strCpuID = null; foreach (ManagementObject mo in moc) { strCpuID = mo.Properties["ProcessorId"].Value.ToString(); break; } return strCpuID; }  第三步:编写注册码生成WinForm程序,使用CUP的编号来生成注册码,当然你也可以用 WebForm来写。view plaincopy to clipboardprint? using(RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) { rsa.FromXmlString(“私钥”); // 加密对象 RSAPKCS1SignatureFormatter f = new RSAPKCS1SignatureFormatter(rsa); f.SetHashAlgorithm("SHA1"); byte[] source = System.Text.ASCIIEncoding.ASCII.GetBytes(“CUP的编号”); SHA1Managed sha = new SHA1Managed(); byte[] result = sha.ComputeHash(source); byte[] b = f.CreateSignature(result); msg.Text = Convert.ToBase64String(b); //这里就得到了string形式的注册码 //再接下来你可以把生成的注册码保存成license.lic文件,license.lic文件也没什么特别的格式就是相当于把注册吗保存到一个txt文件中,无非这个txt文件的后缀改成了lic,你要高兴也可保存成其它多种格式。 //也可以保存在注册表中或是web.config中,总之能让你的发布的应用程序能读的到就行。 } using(RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) { rsa.FromXmlString(“私钥”); // 加密对象 RSAPKCS1SignatureFormatter f = new RSAPKCS1SignatureFormatter(rsa); f.SetHashAlgorithm("SHA1"); byte[] source = System.Text.ASCIIEncoding.ASCII.GetBytes(“CUP的编号”); SHA1Managed sha = new SHA1Managed(); byte[] result = sha.ComputeHash(source); byte[] b = f.CreateSignature(result); msg.Text = Convert.ToBase64String(b); //这里就得到了string形式的注册码 //再接下来你可以把生成的注册码保存成license.lic文件,license.lic文件也没什么特别的格式就是相当于把注册吗保存到一个txt文件中,无非这个txt文件的后缀改成了lic,你要高兴也可保存成其它多种格式。 //也可以保存在注册表中或是web.config中,总之能让你的发布的应用程序能读的到就行。 }  第四步:在发布的程序相关地方添加对注册码有效性的验证。如添加在程序启动的时候,程序执行特定操作的时候等等,总之看你的需要做有效性的验证。view plaincopy to clipboardprint? //相关注册码获取代码…… //以下代码是发布程序使用公钥对注册码进行验证 using(RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) { rsa.FromXmlString(“公钥”); RSAPKCS1SignatureDeformatter f = new RSAPKCS1SignatureDeformatter(rsa); f.SetHashAlgorithm("SHA1"); byte[] key = Convert.FromBase64String(“注册码”); SHA1Managed sha = new SHA1Managed(); byte[] name = sha.ComputeHash(ASCIIEncoding.ASCII.GetBytes(“注册码”)); if(f.VerifySignature(name,key)) msg.Text = "验证成功"; //可以return true;等方式返回相应的状态 else msg.Text = "不成功"; }
󰈣󰈤
 
 
 
  免责声明:本文仅代表作者个人观点,与王朝网络无关。王朝网络登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
华丽的模特拍摄(8)
华丽的模特拍摄(7)
华丽的模特拍摄(6)
华丽的模特拍摄(5)
八里沟
朝阳宫
天下峨眉 云上金顶
老家(四)
 
>>返回首页<<
 
 
 为你推荐
 
 
 
 转载本文
 UBB代码 HTML代码
复制到剪贴板...
 
 热帖排行
 
 
 
 
©2005- 王朝网络 版权所有