rsa加密概念和license總結

fengguoqing1發表於2010-03-07

前幾天公司的專案需要用到rsa做個license,簡單總結一下

java 的加密技術有好多,看了幾種,都差不多,看了一下des 和 rsa加密和md5

據說rsa加密在未來的10年內是沒辦法解密的(據說,呵呵)。

首先:rsa 加密分publicKey(公鑰)和privateKey(私鑰),privateKey用來加密,publicKey用來解密和簽名驗證。

publicKey可以公開,privateKey自己儲存好。

在做的時候有兩種方式:

一種是把兩個key生成到一個檔案裡,字尾名可以隨便取,看不到裡面的內容,除非用自己寫的方法取出

例如RsaKey.data

一種是直接生成Key物件,可以儲存到一個字元轉裡,不管是private或者public  Key都有兩個值,model和expend(不知道記得對不對),在第一種方式的檔案中儲存的也是這個,只不過生成檔案後可能進行編碼了。

 

 

數字簽名也就是把加密後的物件通過解密後跟原來的物件做對比看對不對,如果對的話就返回true,否則返回false。

 

rsa加密自己理解不深,不過在沒有複雜演算法的情況下應該夠用了。

 

 

下面說下license

 

license用來限制公司的專案濫用,防止copy。

在專案中建立一個license.xml 裡面可以有使用者名稱,專案使用到期時間,和mac地址(很重要,使用者伺服器的mac地址)和把使用者名稱和到期時間和mac加起來生成的字串通過rsa加密後的字串, 還有一些其他的引數可以自己定,在專案啟動時用公鑰進行驗證簽名,看對不對,如果對的話就繼續,不對可以在專案中生成一個全域性變數限制使用者許可權,然後再驗證取出客戶伺服器的mac地址進行對比,如果不相同的話就說明專案是從別的地方copy來的或者是使用者提供的mac不對,通過的話再驗證到期時間或者其他的一些引數。

 

 

再說下mac地址的得到,在jdk1.6中sun已經提供了方法得到及其的mac地址,在jdk1.5和jdk1.4中還沒有提供方法,只能通過檔案ipconfig /all命令得到,網上有一個前輩寫了一個,很實用。

 

 

由於理解的不深,只能簡單寫一下,有錯誤的地方忘糾正和諒解,可以共同進步,呵呵

 

 

 

 

 

 

 

相關文章