簡述.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應用程序的授權模型使系統更易管理
 
使用.net下的系統事件增強應用程序
  一般情況下,在開發應用程序的時候都很少考慮一些系統部分的變化對應用程序帶來影響,比如系統字體庫裏的字體增加或減少,用戶注銷或系統關機,桌面主題變換等等。針對應用程序的不同,或多或少會造成一些影響,...查看完整版>>使用.net下的系統事件增強應用程序
 
使用.net下的系統事件增強應用程序
使用.net下的系統事件增強應用程序鄭佐 2005-4-12 一般情況下,在開發應用程序的時候都很少考慮一些系統部分的變化對應用程序帶來影響,比如系統字體庫裏的字體增加或減少,用戶注銷或系統關機,桌面主題變換...查看完整版>>使用.net下的系統事件增強應用程序
 
讓安全性更上一層樓Linux安全配置步驟簡述
  一、磁盤分區  1、如果是新安裝系統,對磁盤分區應考慮安全性:  1)根目錄(/)、用戶目錄(/home)、臨時目錄(/tmp)和/var目錄應分開到不同的磁盤分區;  2)以上各目錄所在分區的磁盤空間大小應充分考...查看完整版>>讓安全性更上一層樓Linux安全配置步驟簡述
 
DNS第一講曆史和簡述授權
  以下是本人把DNS的一點理解,持不同意見的朋友請指出。謝謝  60年末代,美國資助試驗性廣域計算機風,稱爲ARPAnet,70年代時,70年代,ARPAnet只是一個擁有幾百台主機的小網絡,僅需要一個 HOSTS文件就可以容納...查看完整版>>DNS第一講曆史和簡述授權
 
 
回到王朝網路首頁