网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > ASP.NET技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
..Net 下信号量(Semaphore)的一种.
.比较:HyperLink控件、LinkButto.
.关于.net中页面CSS样式丢失的解决.
.开发ASP.NET Atlas服务器端Exten.
.ASPX保存远程图片到本地的两种方.
.在.NET开发中灵活使用TreeView控.
.Asp.net生成htm静态文件的两种途.
.微软发布了ASP.NET MVC源代码.
..Net分页控件发布.
.asp.net 2.0里动态访问meta标记.
.将dataset以xml形式发给客户端下.
.谈谈HtmlControl与WebControl的区.
.DataTable操作中的性能问题.
.Asp.net url分页的用户控件 .
.asp.net 2.0 中加密web.config 文.
.ASP.NET动态加载控件的"追赶论".
.自定义控件中使用枚举类型的属性.
.FCKEditor在Asp.net的安装.
.无限级分类的非递归实现(存储过程.
.在.net中创建使用全球唯一标识符.

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

发表日期:2008-12-12


  看了“看了下面那篇“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 = "不成功";   
}

上一篇:如何在客户端清除fileUpLoad控件的文件路径 人气:150
下一篇:简述.Net下的应用程序授权实战步骤 人气:70
浏览全部asp.net的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐