亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

[轉(zhuǎn)]不易破解的軟件注冊碼算法(By 笑望人生)

系統(tǒng) 2195 0

Microsoft .Net的應(yīng)用程序的代碼文件,與Java生成的文件類似,它們都沒有本地代碼,而是一種類似于匯編的代碼。這樣,只要有合適的工具,就可以完整的把別人寫出來的程序反編譯成自己需要的程序文件。

我所知道的.Net下的反匯編程序是 Salamander Refelector 兩個工具,他們都可以對.Net的程序集反編譯成你需要的語言。

那么,我們寫的程序,做的項目,如何進(jìn)行正版的許可證管理,有許多方法。

最好的方案,是幾個方法的綜合。下面我說一下單獨(dú)的許可驗(yàn)證方法。

最簡單的方法,就是使用許可存儲。方法是用戶輸入正版的注冊碼,通過程序中專門的算法程序進(jìn)行驗(yàn)算,得出的結(jié)果與事先保存在程序中的結(jié)果比對,比對一致表示輸入正確。然后把結(jié)果保存在存儲中,如注冊表或者專門的許可文件中,程序許可通過。

這個方法使用的人/公司最多,但是缺點(diǎn)也是最多的,只要使用上面的工具把驗(yàn)算注冊碼的算法給弄清楚,就可以自己寫一個生成序列號的注冊機(jī),這個注冊方法就形同虛設(shè)了。

還有一個比較好的方法,就是仿照WindowsXP的激活機(jī)制,客戶的程序自動訪問互聯(lián)網(wǎng)的一個專門設(shè)定的服務(wù)器,通過Tcp/Ip或者WebService遠(yuǎn)程訪問服務(wù)器上的許可程序,許可后把結(jié)果保存在客戶端計算機(jī)上。這個方法的好處是許可驗(yàn)證代碼保存在開發(fā)者控制的計算機(jī)上,客戶端無法獲取驗(yàn)證算法,而且可以通過數(shù)據(jù)庫管理用戶,非常方便。

但是這個方法也有缺點(diǎn),首先是可靠的Internet連接。如果要防止用戶使用盜版,則必須在客戶端的程序中添加一個隨機(jī)訪問遠(yuǎn)程許可服務(wù)器驗(yàn)證的功能,這樣不但需要一個24小時的Internet連接,而且經(jīng)常進(jìn)行驗(yàn)證也會干擾程序的正常運(yùn)行。還有就是如果有人通過研究客戶端的接收返回信息的代碼,弄一個虛擬的驗(yàn)證服務(wù)器,這個功能也會完蛋。

那么,所有的焦點(diǎn)都聚集在客戶端的驗(yàn)證算法上,只要這個客戶端的驗(yàn)證算法被人弄清楚了,整個程序的許可可以說就不存在了,所以許多開發(fā)者/開發(fā)公司費(fèi)好大的力氣,弄一個足夠復(fù)雜的驗(yàn)證算法出來,用算法的復(fù)雜度來抵抗破解。但是再復(fù)雜的算法,只要有人寫得出來,就有人能破解得出來,這個道理我想大家都明白。

那是否有加密算法與解密算法不同的辦法呢?有。而且.Net自帶的類庫里面就有這個算法。
這個算法的原理是不對稱加密的原理。不對稱加密原理大家基本上都了解。加密的密碼(密鑰)分為兩個部分,公鑰和私鑰。通過私鑰加密的密文只能通過公鑰解密。根據(jù)這個特性,我們可以發(fā)現(xiàn)只要開發(fā)者保存好私鑰,即使算法代碼被客戶端破解,因客戶端不知道保存在開發(fā)者處的私鑰,也無法生成注冊碼。

這個算法就是 System.Security.Cryptography 名稱空間的 RSAPKCS1SignatureFormatter 類(用來生成注冊碼)和 RSAPKCS1SignatureDeformatter 類(用來在客戶端驗(yàn)證注冊碼)。驗(yàn)證過程如下:
首先,需要生成一個公鑰和私鑰對,當(dāng)然,依靠人是無法生成的,我們可以通過 System.Security.Cryptography 名稱空間的 RSACryptoServiceProvider 類來生成公鑰/私鑰對。

using (RSACryptoServiceProviderrsa = new RSACryptoServiceProvider())
{
// 公鑰
string pubkey = rsa.ToXmlString( false );

// 私鑰
string prikey = rsa.ToXmlString( true );

}

獲取私鑰以后,可以用 RSAPKCS1SignatureFormatter 類來生成注冊碼,代碼如下(引用名稱空間略)

using (RSACryptoServiceProviderrsa = new RSACryptoServiceProvider())
{
rsa.FromXmlString(prikey);
// 加密對象
RSAPKCS1SignatureFormatterf = new RSAPKCS1SignatureFormatter(rsa);
f.SetHashAlgorithm(
" SHA1 " );
byte []source = System.Text.ASCIIEncoding.ASCII.GetBytes(txtIn.Text);
SHA1Managedsha
= new SHA1Managed();
byte []result = sha.ComputeHash(source);

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

msg.Text
= Convert.ToBase64String(b);
}

上面的代碼是一個示例aspx頁面的代碼,頁面包括一個id為msg的Label控件,一個ID為txtIn的TextBox控件,一個ID為btnOK的Button控件,上面的代碼就是btnOK的事件處理程序的內(nèi)容。大家可以非常清楚的看出處理流程,生成一個RsaCryptoServiceProvider類實(shí)例,然后把這個類實(shí)例的加密密鑰指定為包含私鑰的prikey字符串因?yàn)榧用芙饷艿墓€/私鑰必須是對應(yīng)的。然后獲取txtIn輸入的內(nèi)容,生成密鑰后在msg控件上顯示。

下面是使用 RSAPKCS1SignatureDeformatter 類來驗(yàn)證輸入:
using (RSACryptoServiceProviderrsa = new RSACryptoServiceProvider())
{
rsa.FromXmlString(pubkey);
RSAPKCS1SignatureDeformatterf
= new RSAPKCS1SignatureDeformatter(rsa);

f.SetHashAlgorithm(
" SHA1 " );

byte []key = Convert.FromBase64String(txtKey.Text);

SHA1Managedsha
= new SHA1Managed();
byte []name = sha.ComputeHash(ASCIIEncoding.ASCII.GetBytes(txtIn.Text));
if (f.VerifySignature(name,key))
msg.Text
= " 驗(yàn)證成功 " ;
else
msg.Text
= " 不成功 " ;
}


上面的代碼也很好理解,就是多了一個ID為txtKey的TextBox控件,他通過同時獲取用戶名/加密密鑰來進(jìn)行驗(yàn)證。重點(diǎn)是RSA類的FromXmlString()方法,注意上面的這個方法獲取的是公鑰,表示這段驗(yàn)證代碼是保存在客戶端的,客戶端代碼是沒有私鑰的,即使有人把程序集的代碼反編譯了也沒有用。


上面兩段代碼需要注意的就是生成的公鑰/私鑰必須匹配,我使用RSA對象生成密鑰對后保存成為字符串常量,就可以解決這個問題。

上面這個方法仍然無法解決客戶使用ildasm反編譯后暴力修改IL代碼,只有靠可靠的強(qiáng)名稱以及數(shù)字證書來保證程序集不被修改了。

[轉(zhuǎn)]不易破解的軟件注冊碼算法(By 笑望人生)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: riav久久中文一区二区 | 欧美日韩在大午夜爽爽影院 | 色综合激情网 | 精品伊人久久久99热这里只 | 国产91精品久久久久999 | a毛片久久免费观看 | 久久久久久久爱综合 | 国产系列欧美系列日韩系列在线 | 国产成在线人视频免费视频 | 亚洲国产高清精品线久久 | 小视频在线免费观看 | 奇米影音777| 成人小视频网 | 东北老妇露脸xxxxx | 欧美一级中文字幕 | 色综合久久中文字幕网 | 国产欧美综合在线一区二区三区 | 中文字幕免费在线看线人动作大片 | 一级毛片免费在线观看网站 | 亚洲精品天堂自在久久77 | 亚洲精品久久久久综合中文字幕 | 成人97在线观看免费高清 | 天天综合网天天做天天受 | 亚洲美女亚洲精品久久久久 | h视频网站在线观看 | 一级午夜a毛片免费视频 | 久久亚洲国产精品五月天婷 | 中国一级全黄的免费观看 | 国产一区二区在免费观看 | 精品小视频在线观看 | 男女午夜影院 | 欧美线人一区二区三区 | 久久国产视频精品 | 狠狠操在线观看 | 婷婷综合亚洲 | 国产一级αv片免费观看 | 五月婷婷免费视频 | 欧美大片a一级毛片视频 | 蜜桃日本一道无卡不码高清 | 国产特黄一级毛片特黄 | 成人免费视频国产 |