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

看了“看了下面那篇“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下的应用程序授权实战步骤
  看了“看了下面那篇“Crack别人应用程序”的文章有感,简述.Net下的应用程序授权。”,自己实际操作了把得出的心得 。这里原理啊背景啊什么都不介绍了,笑望人生已经在他的BLOG上都写的相当清楚了,有什么不细节...查看完整版>>简述.Net下的应用程序授权实战步骤
 
ASP.NET应用程序的安全方案(二)—授权
摘要:本文ASP.NET应用程序授权的概念,介绍了各种授权模式并进行了比较,阐述了选择授权模式的机制。 关键字:授权 authorization ASP.NET WEB应用 1.1. 授权概念 任何成功的应用程序安全策略的基础都是稳固的...查看完整版>>ASP.NET应用程序的安全方案(二)—授权
 
ASP.NET应用程序的安全方案(二)—授权
摘要:本文ASP.NET应用程序授权的概念,介绍了各种授权模式并进行了比较,阐述了选择授权模式的机制。 关键字:授权 authorization ASP.NET WEB应用 1.1. 授权概念 任何成功的应用程序安全策略的基础都是稳固的...查看完整版>>ASP.NET应用程序的安全方案(二)—授权
 
.NET应用程序的授权模型使系统更易管理
  正确设计的授权机制使系统更易部署和治理。基于Active Directory等企业身份验证机制来授权,你的应用程序就能与公司现有的安全策略无缝地集成。在n层应用程序中,每一层都可使用授权,从而创建出更灵活的系统。 ...查看完整版>>.NET应用程序的授权模型使系统更易管理
 
.NET应用程序的授权模型使系统更易管理
  正确设计的授权机制使系统更易部署和管理。基于Active Directory等企业身份验证机制来授权,你的应用程序就能与公司现有的安全策略无缝地集成。在n层应用程序中,每一层都可使用授权,从而创建出更灵活的系统。 ...查看完整版>>.NET应用程序的授权模型使系统更易管理