2011-02-08 30 views
13

我正在爲使用C++/Obj-C編寫的Windows和Mac的小型跨平臺產品開展工作。我被要求實施相同的許可模塊。這項任務是爲我們所有產品引入許可的非常雄心勃勃的項目的一部分。最後,我們將有一個完整的授權計劃,我們可以向客戶出售支持年度續訂,許可證級別等的許可證。我的問題是,我不知道實施許可證檢查程序的第一件事。任何人都可以指出我的一些方法嗎?我可以學習哪些開源許可模塊?執行許可檢查庫

回答

16

我使用了部分密鑰驗證(PKV)系統,並且我已經在C#中用PHP生成器實現了這一點。谷歌會提出各種點擊,解釋和實現;但布蘭登·斯塔格斯(在Delphi儘管!)寫了一個很好的概述,在這裏:

http://www.brandonstaggs.com/2007/07/26/implementing-a-partial-serial-number-verification-system-in-delphi/

PKV的工作原理是利用哈希一起編碼在關鍵的某些信息(許可類型,序列號的產品,日期等)用戶名和散列的編碼信息。許多關鍵實際上由多個char哈希組成。這個想法是,你只能檢查這些散列的一個子集。發佈的確切子集可以隨着時間的推移而改變,以確保某種安全性並防止某些類型的逆向工程。

我也會加密密鑰來幫助混淆許可證中每個字符的含義。否則,具有多個密鑰的人可能會確定某些字符位置意味着某些事情(「哦,字符3-4是序列號」)。這可能是你的盔甲的一個裂縫!

您開發的任何許可證系統都不完善。這將是可以破解的,如果你的產品很受歡迎,將會被破解。然而,有一個強有力的論據認爲,許可證制度的存在是爲了讓誠實的人保持誠實,併爲稍不誠實的人產生足夠的障礙 - 但並不是那麼多的障礙,以至於太多的不便(例如,我通常反對硬件鎖定)。無論如何,那些攻擊你的系統的人可能不會爲此付出代價。

+2

對於最後一段來說,它永遠不會是完美的,但如果它足夠硬,那就沒事了。 –

+0

我愛你的解釋,特別是最後一段。它總結了一切! –