2017-02-22 91 views
0

我需要找到鎖定軟件產品的方法,因此只有購買它的客戶才能使用它。我正在考慮實施我自己的「CD-key」功能。使用自制密鑰算法保護WPF應用程序


它是如何工作: 我有一個單獨的程序,即只用於生成密鑰。

程序使用與正在調用的軟件相同的算法。密鑰隨程序一起提供(在說明手冊時)並在程序中輸入一次。之後,用戶可以自由使用它,而無需再次輸入(直到重新安裝)。

這看起來很簡單,對我來說可行,但唯一的問題是密鑰可以在其他設備上重複使用,所以我需要實現一種方式,即將密鑰在線標記爲已使用和未使用,程序正在卸載。

回答

1

我會嘗試在這裏代替問這對https://softwareengineering.stackexchange.com/ - 但我建議你看看(非) - 商業產品/ API的爲您排憂解難(如http://www.ssware.com/cryptolicensing/cryptolicensing_net.htm)在重新發明輪子代替。由於這不是您的核心業務,因此您可能會得到比其他人可能爲您提供的最佳解決方案(因此也是弱點和漏洞)。

有些產品你可以看看:

免費

付費使用


PS:如果你將開始實施對自己的一個授權解決方案,請放下實施中都部署代碼相同的算法,以及發電機 - 反向工程太容易了。嘗試使用一些支持公鑰/私鑰機制,例如一些mathemathical公式,或像我說的儘量靠庫/ API,它的專業在這個領域。

+0

好的,謝謝 – someone1

+0

@ someone1可能會檢查QLicense產品可能...至於在線註冊您的「密鑰」 - 一旦發佈密鑰,我會說它鎖定給一個特定的用戶 - 並建立一個Web服務在哪裏用戶可以註冊他的軟件?但正如我所說,請注意API鏈接(和谷歌其他),看看他們是否提供了更加防水的解決方案。 –

+0

好的,謝謝:) – someone1

1

問題:

由於您的代碼可以逆向工程,沒有提供您的密鑰存儲安全的解決方案真正的出路。所有變量都被硬編碼到應用程序中,或者在單獨的文件中使用相同的應用程序進行加密,這些變量都不安全。你需要把它們當作公開可用

其次,即使你將提供服務器密鑰認證的方式,再一次。您的代碼可以被反向設計。黑客將刪除身份驗證部分,並將重新構建您的應用程序,免費使用DRM。第三,即使你整個代碼,將被加密,仍然有解碼和刪除身份驗證(看看denuvo最新失敗)的方法。

如果您將連接代碼加密和服務器端密鑰驗證,這取決於有多少人蔘與黑客攻擊,您可以將它們延遲一段時間。

解決方案:

有100種%安全的方式來阻止你的應用程序是破解的,你需要使它100%基於Web的。如果您希望將C#用作服務器引擎,則有像ASP.Net這樣的解決方案。

+0

非常真實!如果你不需要去桌面路由,那麼最好使它基於webbased。或者,也許還需要連接到服務器以獲取服務器上的結果和數據以及計算結果的瘦客戶端 - 因此您的業務邏輯不會分佈在每臺計算機上。 –